Mise en place du parsage des adresses mail, et on utilise aussi config pour la plage

des ip filaires. À venir, la rationalisation de mitdools pour avoir un équivalent
de ip_of_mid dans l'autre sens (genre, si une nounou veut fixer l'ip d'une machine)
This commit is contained in:
Pierre-Elliott Bécue 2013-01-21 02:19:26 +01:00
parent ffb1b94144
commit c805146ab5
2 changed files with 24 additions and 23 deletions

View file

@ -44,17 +44,17 @@ from midtools import Mid
### Les droits
# en cas de typo, l'appel d'une variable plante, on préfèrera donc les utiliser en lieu et place
# des chaînes de caractères
nounou = "Nounou"
cableur = "Cableur"
apprenti = "Apprenti"
tresorier = "Tresorier"
bureau = "Bureau"
imprimeur = "Imprimeur"
moderateur = "Moderateur"
multimachines = "Multimachines"
parent = "parent"
soi = "soi"
responsable = "responsable"
nounou = u"Nounou"
cableur = u"Cableur"
apprenti = u"Apprenti"
tresorier = u"Tresorier"
bureau = u"Bureau"
imprimeur = u"Imprimeur"
moderateur = u"Moderateur"
multimachines = u"Multimachines"
parent = u"parent"
soi = u"soi"
responsable = u"responsable"
TOUS_DROITS = [nounou, apprenti, bureau, tresorier, imprimeur, moderateur, multimachines, cableur]
DROITS_ELEVES = [nounou, bureau]
@ -285,9 +285,11 @@ class mail(Attr):
if res:
raise ValueError("Mail déjà existant", [r.dn for r in res])
# XXX - to be implemented
#def parse_value(self, mail, ldif):
# pass
def parse_value(self, mail, ldif):
if not re.match('^[A-Za-z][-_.0-9A-Za-z]+@([A-Za-z0-9]{2}[A-Za-z0-9-_]*[.])+[a-z]{2,6}$', val):
raise ValueError("Adresse mail invalide (%s)" % val)
self.value = val
class canonicalAlias(mail):
singlevalue = True
@ -298,7 +300,8 @@ class canonicalAlias(mail):
def parse_value(self, val, ldif):
val = u".".join([ a.capitalize() for a in val.split(u'.', 1) ])
if not re.match('[A-Za-z][-_.0-9A-Za-z]+', val):
val = u"-".join([ a.capitalize() for a in val.split(u'-', 1) ])
if not re.match('^[A-Za-z][-_.0-9A-Za-z]+@([A-Za-z0-9]{2}[A-Za-z0-9-_]*[.])+[a-z]{2,6}$', val):
raise ValueError("Alias mail invalide (%s)" % val)
self.value = val
@ -312,7 +315,7 @@ class mailAlias(mail):
def parse_value(self, val, ldif):
val = val.lower()
if not re.match('[a-z][-_.0-9a-z]+', val):
if not re.match('^[A-Za-z][-_.0-9A-Za-z]+@([A-Za-z0-9]{2}[A-Za-z0-9-_]*[.])+[a-z]{2,6}$', val):
raise ValueError("Alias mail invalide (%r)" % val)
self.value = val
@ -365,8 +368,8 @@ class droits(Attr):
category = 'perso'
def parse_value(self, val, ldif):
if val.lower() not in [i.lower() for i in TOUS_DROITS]:
raise ValueError("Ces droits n'existent pas (%r)" % val)
# if val.lower() not in [i.lower() for i in TOUS_DROITS]:
# raise ValueError("Ces droits n'existent pas (%r)" % val)
self.value = val.capitalize()
def is_modifiable(self, liste_droits):