[attributs] ajout d'une variable de classe can_modify pour les attributs

This commit is contained in:
Antoine Durand-gasselin 2010-10-17 22:31:57 +02:00
parent 3f8f2b498a
commit 8c9bf151bb

View file

@ -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,