| 1234567891011121314151617181920212223242526272829303132333435363738 |
- '''
- @author: olivier.massot, févr. 2018
- '''
- class Model():
- """ Modèle de données d'un objet """
- _FIELDS = []
- def __init__(self):
- """ Génère un objet vide,
- les propriétés de l'objet sont générées automatiquement à partir de la variable de classe _FIELDS"""
- for fld in self._FIELDS:
- setattr(self, fld, None)
- def __repr__(self):
- return "<{} => {}>".format(self.__class__.__name__, ",".join(["{}={}".format(field, getattr(self, field)) for field in self._FIELDS]))
- @classmethod
- def from_dict(cls, data):
- """ Retourne un objet à partir d'un dictionnaire de données """
- facture = cls()
- for key, value in data.items():
- setattr(facture, key, value)
- return facture
- def to_csv(self):
- """ Renvoie une chaine de caractère correspondant aux données de l'objet au format CSV
- Séparateur = tabulation (car c'est un caractère interdit dans Access) """
- return "\t".join([str(getattr(self, field)).replace("\t", " ") for field in self._FIELDS] + ["\n"])
- @classmethod
- def from_csv(cls, line):
- """ Retourne un objet Facture à partir d'une ligne de texte au format CSV
- Séparateur = tabulation (car c'est un caractère interdit dans Access) """
- return cls.from_dict(dict(zip(cls._FIELDS, line.split("\t"))))
|