def toData(self, checkName = True): """ Transforme les données du compte en un dictionnaire pouvant être utilisé avec l'API BSS, après avoir éventuellement vérifié l'adresse. :param bool checkName: vérifie l'adresse associée au compte :raises NameException: exception levée si le nom n'est pas une \ adresse mail valide :return: le dictionnaire contenant les informations au sujet du \ compte et pouvant être passé à l'API BSS. """ if self.name is None: raise NameException( 'Aucune adresse mail spécifiée.' ) if checkName and not utils.checkIsMailAddress( self.name ): raise NameException("L'adresse mail " + self.name + " n'est pas valide") data = {} for attr in self.__dict__: if ( attr == "_zimbraZimletAvailableZimlets" or self.__getattribute__(attr) is None ): continue attrValue = self.__getattribute__(attr) if isinstance(attrValue, bool): attrValue = utils.changeBooleanToString(attrValue) data[attr[1:]] = attrValue return data
def from_json_record(record): """ Génère une instance à partir de données JSON décodées dans un dictionnaire Python. :param record: le dictionnaire dans lequel les information ont été \ décodées :raises TypeError: si certains des champs ont des types invalides :raises NameException: si l'adresse contenue dans le champ name, ou \ l'une des adresses de membres, l'un des alias ou l'une des \ entrées d'autorisation sont invalides :return: l'instance créée """ group = Group(record['name'] if 'name' in record else None) for a in Group.ATTRIBUTES: if a in record: setattr(group, a, record[a]) for s in Group.SETS: if s in record: bad_addr = set( [a for a in record[s] if not utils.checkIsMailAddress(a)]) if not bad_addr: getattr(group, '_{}'.format(s)).update(record[s]) continue raise NameException("Adresse(s) mail {} invalide(s)".format( ', '.join(bad_addr))) return group
def zimbraPrefMailForwardingAddress(self, value): if isinstance(value, str) or value is None: if utils.checkIsMailAddress(value): self._zimbraPrefMailForwardingAddress = value else: raise NameException("L'adresse mail " + value + " n'est pas une adresse mail valide") else: raise TypeError
def zimbraCalResContactEmail(self, value): if isinstance(value, str) or value is None: if utils.checkIsMailAddress(value): self._zimbraCalResContactEmail = value else: raise NameException("L'adresse mail " + value + " n'est pas une adresse mail valide") else: raise TypeError("zimbraCalResContactEmail")
def __init__(self, name=None): if name is not None and not isinstance(name, str): raise TypeError if name is not None and not utils.checkIsMailAddress(name): raise NameException("Adresse mail {} invalide".format(name)) GlobalModel.__init__(self, name) for a in Resource.ATTRIBUTES: setattr(self, '_{}'.format(a), None)
def toData(self, checkName=True): """ Transforme les données d'une ressource' en un dictionnaire pouvant être utilisé avec l'API BSS, après avoir éventuellement vérifié l'adresse. :param bool checkName: vérifie l'adresse associée au compte :raises NameException: exception levée si le nom n'est pas une \ adresse mail valide :return: le dictionnaire contenant les informations au sujet du \ compte et pouvant être passé à l'API BSS. """ if self.name is None: raise NameException('Aucune adresse mail spécifiée.') if checkName and not utils.checkIsMailAddress(self.name): raise NameException("L'adresse mail " + self.name + " n'est pas valide") data = {} for attr in self.__dict__: attrValue = self.__getattribute__(attr) # On ne prend pas le préfixe '_' attrKey = attr[1:] if (self.__getattribute__(attr) is None): continue if isinstance(attrValue, list) or attrValue == 'DELETE_ARRAY': # On prévoit une valeur spéciale 'DELETE_ARRAY' pour effacer un attribut de type tableau if attrValue == 'DELETE_ARRAY': attrValue = '' attrKey = attrKey + '[]' if isinstance(attrValue, bool): attrValue = utils.changeBooleanToString(attrValue) data[attrKey] = attrValue return data
def __init__(self, name): if utils.checkIsMailAddress(name): GlobalModel.__init__(self, name) self._id = None self._admin = None self._businessCategory = None self._co = None self._company = None self._description = None self._displayName = None self._carLicense = None self._facsimileTelephoneNumber = None self._givenName = None self._homePhone = None self._initials = None self._l = None self._mavTransformation = None self._mavRedirection = None self._mobile = None self._pager = None self._postalCode = None self._quota = None self._sn = None self._st = None self._street = None self._telephoneNumber = None self._title = None self._used = None self._zimbraAccountStatus = None self._zimbraFeatureBriefcasesEnabled = None self._zimbraFeatureCalendarEnabled = None self._zimbraFeatureMailEnabled = None self._zimbraFeatureMailForwardingEnabled = None self._zimbraFeatureOptionsEnabled = None self._zimbraFeatureTasksEnabled = None self._zimbraHideInGal = None self._zimbraLastLogonTimestamp = None self._zimbraMailQuota = None self._zimbraNotes = None self._zimbraPasswordMustChange = None self._zimbraPrefMailForwardingAddress = None self._zimbraPrefMailLocalDeliveryDisabled = None self._zimbraMailAlias = None self._zimbraMailCanonicalAddress = None self._zimbraPrefFromDisplay = None self._zimbraCOSId = None self._zimbraZimletAvailableZimlets = None else: raise NameException("Le nom donné n'est pas une adresse mail")
def importJsonAccount(jsonAccount): json_data = open(jsonAccount) data = json.load(json_data) if "name" not in data: raise NameException("Adresse mail non présent dans le fichier json") account = Account(data["name"]) for attr in data: if attr == "name": continue propattr = getattr(account.__class__, attr, None) if isinstance(propattr, property) and propattr.fset is not None: if data[attr] == "None": propattr.fset(account, None) else: propattr.fset(account, data[attr]) return account