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:
parent
ffb1b94144
commit
c805146ab5
2 changed files with 24 additions and 23 deletions
39
attributs.py
39
attributs.py
|
@ -44,17 +44,17 @@ from midtools import Mid
|
||||||
### Les droits
|
### Les droits
|
||||||
# en cas de typo, l'appel d'une variable plante, on préfèrera donc les utiliser en lieu et place
|
# 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
|
# des chaînes de caractères
|
||||||
nounou = "Nounou"
|
nounou = u"Nounou"
|
||||||
cableur = "Cableur"
|
cableur = u"Cableur"
|
||||||
apprenti = "Apprenti"
|
apprenti = u"Apprenti"
|
||||||
tresorier = "Tresorier"
|
tresorier = u"Tresorier"
|
||||||
bureau = "Bureau"
|
bureau = u"Bureau"
|
||||||
imprimeur = "Imprimeur"
|
imprimeur = u"Imprimeur"
|
||||||
moderateur = "Moderateur"
|
moderateur = u"Moderateur"
|
||||||
multimachines = "Multimachines"
|
multimachines = u"Multimachines"
|
||||||
parent = "parent"
|
parent = u"parent"
|
||||||
soi = "soi"
|
soi = u"soi"
|
||||||
responsable = "responsable"
|
responsable = u"responsable"
|
||||||
|
|
||||||
TOUS_DROITS = [nounou, apprenti, bureau, tresorier, imprimeur, moderateur, multimachines, cableur]
|
TOUS_DROITS = [nounou, apprenti, bureau, tresorier, imprimeur, moderateur, multimachines, cableur]
|
||||||
DROITS_ELEVES = [nounou, bureau]
|
DROITS_ELEVES = [nounou, bureau]
|
||||||
|
@ -285,9 +285,11 @@ class mail(Attr):
|
||||||
if res:
|
if res:
|
||||||
raise ValueError("Mail déjà existant", [r.dn for r in res])
|
raise ValueError("Mail déjà existant", [r.dn for r in res])
|
||||||
|
|
||||||
# XXX - to be implemented
|
def parse_value(self, mail, ldif):
|
||||||
#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):
|
||||||
# pass
|
raise ValueError("Adresse mail invalide (%s)" % val)
|
||||||
|
self.value = val
|
||||||
|
|
||||||
|
|
||||||
class canonicalAlias(mail):
|
class canonicalAlias(mail):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
|
@ -298,7 +300,8 @@ class canonicalAlias(mail):
|
||||||
|
|
||||||
def parse_value(self, val, ldif):
|
def parse_value(self, val, ldif):
|
||||||
val = u".".join([ a.capitalize() for a in val.split(u'.', 1) ])
|
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)
|
raise ValueError("Alias mail invalide (%s)" % val)
|
||||||
self.value = val
|
self.value = val
|
||||||
|
|
||||||
|
@ -312,7 +315,7 @@ class mailAlias(mail):
|
||||||
|
|
||||||
def parse_value(self, val, ldif):
|
def parse_value(self, val, ldif):
|
||||||
val = val.lower()
|
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)
|
raise ValueError("Alias mail invalide (%r)" % val)
|
||||||
self.value = val
|
self.value = val
|
||||||
|
|
||||||
|
@ -365,8 +368,8 @@ class droits(Attr):
|
||||||
category = 'perso'
|
category = 'perso'
|
||||||
|
|
||||||
def parse_value(self, val, ldif):
|
def parse_value(self, val, ldif):
|
||||||
if val.lower() not in [i.lower() for i in TOUS_DROITS]:
|
# if val.lower() not in [i.lower() for i in TOUS_DROITS]:
|
||||||
raise ValueError("Ces droits n'existent pas (%r)" % val)
|
# raise ValueError("Ces droits n'existent pas (%r)" % val)
|
||||||
self.value = val.capitalize()
|
self.value = val.capitalize()
|
||||||
|
|
||||||
def is_modifiable(self, liste_droits):
|
def is_modifiable(self, liste_droits):
|
||||||
|
|
|
@ -48,6 +48,7 @@ sys.path.append('/usr/scripts/gestion')
|
||||||
import config, crans_utils
|
import config, crans_utils
|
||||||
from attributs import attrify, blacklist
|
from attributs import attrify, blacklist
|
||||||
from ldap_locks import CransLock
|
from ldap_locks import CransLock
|
||||||
|
import midtools
|
||||||
|
|
||||||
uri = 'ldap://ldap.adm.crans.org/'
|
uri = 'ldap://ldap.adm.crans.org/'
|
||||||
base_dn = 'ou=data,dc=crans,dc=org'
|
base_dn = 'ou=data,dc=crans,dc=org'
|
||||||
|
@ -230,14 +231,10 @@ class lc_ldap(ldap.ldapobject.LDAPObject):
|
||||||
elif realm in ["fil", "fil-v6", "gratuit", "personnel-ens"]:
|
elif realm in ["fil", "fil-v6", "gratuit", "personnel-ens"]:
|
||||||
uldif['objectClass'] = [u'machineFixe']
|
uldif['objectClass'] = [u'machineFixe']
|
||||||
assert isinstance(owner, adherent) or isinstance(owner, club)
|
assert isinstance(owner, adherent) or isinstance(owner, club)
|
||||||
# XXX - Vérifier les droits
|
|
||||||
|
|
||||||
else: raise ValueError("Realm inconnu: %r" % realm)
|
else: raise ValueError("Realm inconnu: %r" % realm)
|
||||||
|
|
||||||
# On récupère la plage des mids
|
# On récupère la plage des mids
|
||||||
if realm == 'fil':
|
|
||||||
plage = xrange(256, 2047)
|
|
||||||
else:
|
|
||||||
plage = xrange( *(config.mid[realm]))
|
plage = xrange( *(config.mid[realm]))
|
||||||
# On récupère le premier id libre dans la plages s'il n'est pas
|
# On récupère le premier id libre dans la plages s'il n'est pas
|
||||||
# déjà précisé dans le ldiff
|
# déjà précisé dans le ldiff
|
||||||
|
@ -673,6 +670,7 @@ class adherent(proprio):
|
||||||
|
|
||||||
if u'posixAccount' in self.attrs['objectClass']:
|
if u'posixAccount' in self.attrs['objectClass']:
|
||||||
return self.attrs['uid'][0]
|
return self.attrs['uid'][0]
|
||||||
|
|
||||||
elif login:
|
elif login:
|
||||||
fn = crans_utils.strip_accents(unicode(self.attrs['prenom'][0]).capitalize())
|
fn = crans_utils.strip_accents(unicode(self.attrs['prenom'][0]).capitalize())
|
||||||
ln = crans_utils.strip_accents(unicode(self.attrs['nom'][0]).capitalize())
|
ln = crans_utils.strip_accents(unicode(self.attrs['nom'][0]).capitalize())
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue