[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
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)
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,10 +112,10 @@ 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