From d21b2375af86b92370cc0c9677e1916c7b5046d8 Mon Sep 17 00:00:00 2001 From: Nicolas Dandrimont Date: Sat, 16 Oct 2010 15:44:53 +0200 Subject: [PATCH] [attributs] Nettoyage --- attributs.py | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/attributs.py b/attributs.py index 17c08b3..0f8e725 100644 --- a/attributs.py +++ b/attributs.py @@ -59,19 +59,31 @@ def attrify(val, attr, ldif, ctxt_check = True): Doit effectuer les vérifications de contexte dans le *ldif* si ctxt_check est vrai""" - return val if isinstance(val, Attr) else CRANS_ATTRIBUTES[attr](val, ldif) + if isinstance(val, Attr): + return val + else: + return CRANS_ATTRIBUTES[attr](val, ldif, ctxt_check) class Attr(object): legend = "Human-readable description of attribute" singlevalue = None optional = None - def __init__(self, val, ldif): + def __init__(self, val, ldif, ctxt_check): + """Crée un nouvel objet représentant un attribut. + + val: valeur de l'attribut + ldif: objet contenant l'attribut (permet de faire les validations sur l'environnement) + ctxt_check: effectue les validations + """ + self.value = None assert isinstance(val, unicode) self.parse_value(val) - self.validate(ldif) + if ctxt_check: + self.validate(ldif) def parse_value(self, val): + """Transforme l'attribut pour travailler avec notre validateur""" self.value = val def __str__(self): @@ -80,9 +92,10 @@ class Attr(object): def validate(self, ldif): """validates: vérifie déjà que ce qu'on a rentré est parsable""" - self._check_cardinality(ldif) - self._check_uniqueness(ldif) - self._check_users_restrictions(ldif) + own_values = ldif[self.__class__.__name__] + self._check_cardinality(own_values) + self._check_uniqueness() + self._check_users_restrictions(own_values) def normalize(self, values, uldif): "normalizes" @@ -99,14 +112,14 @@ class Attr(object): def _check_type(self, values): """Vérifie que les valeurs ont le bon type (nom est un mot, tel est un nombre, etc...)""" - for v in values: - assert isinstance(v, unicode) + for val in values: + assert isinstance(val, unicode) - def _check_uniqueness(self, values): + def _check_uniqueness(self): """Vérifie l'unicité dans la base de la valeur (mailAlias, chbre, etc...)""" pass - + def _check_values(self, values): """Vérifie que les valeurs sont valides (typiquement chbre)""" pass