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
Exemple #2
0
    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
Exemple #3
0
 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
Exemple #4
0
 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")
Exemple #5
0
    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)
Exemple #6
0
    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