Beispiel #1
0
def fillAccount(accountResponse):
    """
    Permet de remplir un objet compte depuis une réponse de l'API BSS

    :param accountResponse: l'objet account renvoyé par l'API
    :return: l'objet account créé
    :raises ServiceException: Exception levée si la requête vers l'API à echoué. L'exception contient le code de l'erreur et le message
    :raises NameException: Exception levée si le nom n'est pas une adresse mail valide
    """
    if not utils.checkIsMailAddress(accountResponse["name"]):
        raise NameException("L'adresse mail " + accountResponse["name"] + " n'est pas valide")

    retAccount = models.Account(accountResponse["name"])
    accountKeys = accountResponse.keys()
    for attr in accountKeys:
        if accountResponse[attr] is not None:
            if isinstance(accountResponse[attr], str):
                if accountResponse[attr] == "TRUE" or accountResponse[attr] == "FALSE":
                    retAccount.__setattr__("_" + attr, utils.changeStringToBoolean(accountResponse[attr]))
                else:
                    retAccount.__setattr__("_" + attr, accountResponse[attr])
            elif isinstance(accountResponse[attr], OrderedDict):
                if "type" in accountResponse[attr].keys():
                    if accountResponse[attr]["type"] == "integer":
                        retAccount.__setattr__("_" + attr, int(accountResponse[attr]["content"]))
                    elif accountResponse[attr]["type"] == "array":
                        if attr == "zimbraZimletAvailableZimlets":
                            retAccount.__setattr__("_" + attr, accountResponse[attr]["zimbraZimletAvailableZimlet"])
                        elif attr == "zimbraMailAlias":
                            retAccount.__setattr__("_" + attr, accountResponse[attr]["zimbraMailAlias"])
    return retAccount
def activateAccount(name):
    """
    Méthode permettant de passer l'état d'un compte à activer

    :param name: le nom du compte à (ré)activer
    :raises ServiceException: Exception levée si la requête vers l'API à echoué. L'exception contient le code de l'erreur et le message
    :raises NameException: Exception levée si le nom n'est pas une adresse mail preSupprimé
    :raises DomainException: Exception levée si le domaine de l'adresse mail n'est pas un domaine valide
    """
    if not utils.checkIsMailAddress(name):
        raise NameException("L'adresse mail " + name + " n'est pas valide")
    account = models.Account(name)
    account.zimbraAccountStatus = "active"
    modifyAccount(account)
def closeAccount(name):
    """
    Cette méthode déconnecte toutes les instances du compte et empêche la connexion à celui-ci.
    Le compte ne sera plus visible dans la GAL et les mails entrants seront rejetés

    :param name: le nom du compte à Désactiver
    :raises ServiceException: Exception levée si la requête vers l'API à echoué. L'exception contient le code de l'erreur et le message
    :raises NameException: Exception levée si le nom n'est pas une adresse mail preSupprimé
    :raises DomainException: Exception levée si le domaine de l'adresse mail n'est pas un domaine valide
    """
    if not utils.checkIsMailAddress(name):
        raise NameException("L'adresse mail n'est pas valide")
    setPassword(name, "valeurPourDeconnecterLesSessions")
    account = models.Account(name)
    account.zimbraAccountStatus = "closed"
    account.zimbraHideInGal = True
    modifyAccount(account)
def lockAccount(name):
    """
    Méthode permettant de passer l'état d'un compte à lock
    Cette état déconnecte toutes les instances du compte et empêche la connexion à celui-ci.
    Le compte sera toujours visible dans la GAL et les mails seront toujours acheminés vers cette boîte

    :param name: le nom du compte à verrouiller
    :raises ServiceException: Exception levée si la requête vers l'API à echoué. L'exception contient le code de l'erreur et le message
    :raises NameException: Exception levée si le nom n'est pas une adresse mail preSupprimé
    :raises DomainException: Exception levée si le domaine de l'adresse mail n'est pas un domaine valide
    """
    if not utils.checkIsMailAddress(name):
        raise NameException("L'adresse mail " + name + " n'est pas valide")
    setPassword(name, "valeurPourDeconnecterLesSessions")
    account = models.Account(name)
    account.zimbraAccountStatus = "locked"
    modifyAccount(account)
Beispiel #5
0
def preDeleteAccount(name):
    """
    Permet de mettre un compte dans un état de préSuppression
    Cette méthode désactive le compte puis le renomme (ajout d'un préfixe 'deleted_timestampactuel_name')

    :param name: nom du compte à préSupprimer
    :raises ServiceException: Exception levée si la requête vers l'API à echoué. L'exception contient le code de l'erreur et le message
    :raises NameException: Exception levée si le nom n'est pas une adresse mail valide
    :raises DomainException: Exception levée si le domaine de l'adresse mail n'est pas un domaine valide
    """
    if not utils.checkIsMailAddress(name):
        raise NameException("L'adresse mail " + name + " n'est pas valide")
    closeAccount(name)
    newname = "readytodelete_"+utils.changeTimestampToDate(round(time()))+"_"+name
    renameAccount(name, newname)

    # On altère l'EPPN (champ carLicense) pour éviter un conflit en cas de création d'un compte avec même EPPN
    account = getAccount(newname)
    account2 = models.Account(newname)
    account2.carLicense = "DISABLED_" + account.carLicense
    modifyAccount(account2)

    return newname