diff --git a/attributs.py b/attributs.py index 61cc3f5..399e43c 100644 --- a/attributs.py +++ b/attributs.py @@ -59,6 +59,9 @@ class Attr(object): optional = None conn = None + can_modify = ['nounou'] + """La liste des droits qui suffisent à avoir le droit de modifier la valeur""" + def __init__(self, val, ldif, conn, ctxt_check): """Crée un nouvel objet représentant un attribut. @@ -181,6 +184,7 @@ class tel(Attr): singlevalue = True optional = False legend = u"Téléphone" + can_modify = ["self", "nounou", "cableur"] def parse_value(self, val, ldif): self.value = format_tel(val) @@ -200,7 +204,7 @@ class yearAttr(intAttr): class paiement(yearAttr): legend = u"Paiement" - + can_modify = ["cableur", "nounou", "tresorier"] class carteEtudiant(yearAttr): legend = u"Carte d'étudiant" @@ -210,6 +214,7 @@ class mailAlias(Attr): singlevalue = False optional = True legend = u"Alias mail" + can_modify = ["self", "cableur", "nounou"] def parse_value(self, val, ldif): val = val.lower() @@ -234,6 +239,7 @@ class etudes(Attr): singlevalue = False optional = False legend = u"Études" + can_modify = ["self", "cableur", "nounou"] def parse_value(self, val, ldif): # who cares @@ -244,6 +250,7 @@ class chbre(Attr): singlevalue = True optional = False legend = u"Chambre sur le campus" + can_modify = ["self", "cableur", "nounou"] def parse_value(self, val, ldif): if val in (u"EXT", u"????"): @@ -256,6 +263,7 @@ class droits(Attr): singlevalue = False optional = True legend = u"Droits sur les serveurs" + can_modify = ["nounou", "bureau"] def parse_value(self, val, ldif): if val not in ['apprenti', 'nounou', 'cableur', 'tresorier', 'bureau', @@ -267,6 +275,7 @@ class solde(Attr): singlevalue = True optional = True legend = u"Solde d'impression" + can_modify = ["imprimeur", "nounou", "tresorier"] def parse_value(self, solde, ldif): # on évite les dépassements @@ -288,6 +297,7 @@ class host(dnsAttr): singlevalue = True optional = False hname = legend = u"Nom d'hôte" + can_modify = ["parent", "nounou", "cableur"] class macAddress(Attr): @@ -295,6 +305,7 @@ class macAddress(Attr): optional = False legend = u"Adresse physique de la carte réseau" hname = "Adresse MAC" + can_modify = ["parent", "nounou", "cableur"] def parse_value(self, mac, ldif): self.value = format_mac(mac) @@ -335,7 +346,6 @@ class hostAlias(dnsAttr): optional = True legend = u'Alias de nom de machine' - class ipsec(Attr): singlevalue = False optional = True @@ -430,16 +440,19 @@ class info(Attr): singlevalue = False optional = True legend = u"Quelques informations" + can_modify = ["nounou", "cableur", "bureau"] class homepageAlias(Attr): singlevalue = True optional = True legend = u'Un alias pour la page personnelle' + can_modify = ["webmaster", "nounou", "cableur"] class charteMA(Attr): singlevalue = True optional = True legend= "Signale si l'adhérent a signé la charte de membres actifs" + can_modify = ["nounou", "bureau"] def parse_value(self, signed, ldif): if signed.upper() not in ["TRUE", "FALSE"]: @@ -461,6 +474,7 @@ class loginShell(Attr): singlevalue = True optional = True legend = "Le shell de l'adherent" + can_modify = ["self", "nounou", "cableur"] def parse_value(self, shell, ldif): with open('/etc/shells') as f: @@ -492,6 +506,7 @@ class mail(Attr): singlevalue = True optional = False legend = "Le mail de l'adhérent" + can_modify = ["self", "nounou", "cableur"] # XXX - to be implemented #def parse_value(self, mail, ldif): @@ -508,6 +523,20 @@ class dn(Attr): class postalAddress(Attr): singlevalue = False optional = True + can_modify = ["self", "cableur", "nounou", "bureau"] + +class controle(Attr): + singlevalue = True + optional = False + can_modify = ["tresorier", "nounou"] + + def parse_value(self, ctrl, ldif): + if ctrl not in [u"", u"c", u"p", u"cp", u"pc"]: + raise ValueError("control peut prendre les valeurs [c][p]") + if ctrl = u'pc': + self.value = u'cp' + else: + self.value = ctrl CRANS_ATTRIBUTES= { 'objectClass' : objectClass,