[attributs] Nettoyage

This commit is contained in:
Nicolas Dandrimont 2010-10-16 15:44:53 +02:00
parent ac4b0854b5
commit d21b2375af

View file

@ -59,19 +59,31 @@ def attrify(val, attr, ldif, ctxt_check = True):
Doit effectuer les vérifications de contexte dans le *ldif* si Doit effectuer les vérifications de contexte dans le *ldif* si
ctxt_check est vrai""" 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): class Attr(object):
legend = "Human-readable description of attribute" legend = "Human-readable description of attribute"
singlevalue = None singlevalue = None
optional = 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) assert isinstance(val, unicode)
self.parse_value(val) self.parse_value(val)
if ctxt_check:
self.validate(ldif) self.validate(ldif)
def parse_value(self, val): def parse_value(self, val):
"""Transforme l'attribut pour travailler avec notre validateur"""
self.value = val self.value = val
def __str__(self): def __str__(self):
@ -80,9 +92,10 @@ class Attr(object):
def validate(self, ldif): def validate(self, ldif):
"""validates: """validates:
vérifie déjà que ce qu'on a rentré est parsable""" vérifie déjà que ce qu'on a rentré est parsable"""
self._check_cardinality(ldif) own_values = ldif[self.__class__.__name__]
self._check_uniqueness(ldif) self._check_cardinality(own_values)
self._check_users_restrictions(ldif) self._check_uniqueness()
self._check_users_restrictions(own_values)
def normalize(self, values, uldif): def normalize(self, values, uldif):
"normalizes" "normalizes"
@ -99,10 +112,10 @@ class Attr(object):
def _check_type(self, values): def _check_type(self, values):
"""Vérifie que les valeurs ont le bon type (nom est un mot, tel """Vérifie que les valeurs ont le bon type (nom est un mot, tel
est un nombre, etc...)""" est un nombre, etc...)"""
for v in values: for val in values:
assert isinstance(v, unicode) 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, """Vérifie l'unicité dans la base de la valeur (mailAlias, chbre,
etc...)""" etc...)"""
pass pass