[lc_ldap, attributs] les Attr contiennent aussi les valeurs

This commit is contained in:
Antoine Durand-Gasselin 2010-10-16 15:23:25 +02:00
parent 5f3c3d56fb
commit 85c513a1aa
2 changed files with 95 additions and 58 deletions

View file

@ -50,21 +50,39 @@ def validate_mac(value):
"""Vérifie qu'une adresse mac est valide"""
return True
class Attr:
def attrify(val, attr, ldif, ctxt_check = True):
"""Transforme un n'importe quoi en Attr.
Doit effectuer les normalisations et sanity check si un str ou un
unicode est passé en argument.
Devrait insulter en cas de potentiel problème d'encodage.
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)
class Attr(object):
legend = "Human-readable description of attribute"
singlevalue = None
optional = None
def __init__(self):
pass
def __init__(self, val, ldif):
assert isinstance(val, unicode)
self.parse_value(val)
self.validate(ldif)
def validate(self, values, uldif):
"validates"
self._check_cardinality(values)
self._check_type(values)
self._check_uniqueness(values)
self._check_values(values)
self._check_users_restrictions(values)
def parse_value(self, val):
self.value = val
def __str__(self):
unicode.encode(unicode(self), 'utf-8')
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)
def normalize(self, values, uldif):
"normalizes"
@ -271,31 +289,31 @@ class historique(Attr):
CRANS_ATTRIBUTES= {
'objectClass' : objectClass(),
'nom' : nom(),
'prenom' : prenom(),
'tel' : tel(),
'paiement' : paiement(),
'carteEtudiant' : carteEtudiant(),
'mailAlias' : mailAlias(),
'canonicalAlias' : canonicalAlias(),
'etudes' : etudes(),
'chbre' : chbre(),
'droits' : droits(),
'solde' : solde(),
'mid' : mid(),
'hostAlias' : hostAlias(),
'ipsec' : ipsec(),
'puissance' : puissance(),
'canal' : canal(),
'portTCPout' : portTCPout(),
'portTCPin' : portTCPin(),
'portUDPout' : portUDPout(),
'portUDPin' : portUDPin(),
'prise' : prise(),
'cid' : cid(),
'responsable' : responsable(),
'blacklist' : blacklist(),
'historique' : historique()
'objectClass' : objectClass,
'nom' : nom,
'prenom' : prenom,
'tel' : tel,
'paiement' : paiement,
'carteEtudiant' : carteEtudiant,
'mailAlias' : mailAlias,
'canonicalAlias' : canonicalAlias,
'etudes' : etudes,
'chbre' : chbre,
'droits' : droits,
'solde' : solde,
'mid' : mid,
'hostAlias' : hostAlias,
'ipsec' : ipsec,
'puissance' : puissance,
'canal' : canal,
'portTCPout' : portTCPout,
'portTCPin' : portTCPin,
'portUDPout' : portUDPout,
'portUDPin' : portUDPin,
'prise' : prise,
'cid' : cid,
'responsable' : responsable,
'blacklist' : blacklist,
'historique' : historique
}