[ldap_crans] Ajout du champ mailExt (email_exterieur)
darcs-hash:20100830140715-ffbb2-82d7ca3623aaa50f2b6b050c8b941f6a98762ede.gz
This commit is contained in:
parent
575f926856
commit
6a6665ede6
1 changed files with 47 additions and 26 deletions
|
@ -229,6 +229,37 @@ def format_mac(mac):
|
|||
|
||||
return mac
|
||||
|
||||
def validate_mail(mail, crans_allowed=False):
|
||||
"""Valide une adresse e-mail"""
|
||||
l, mail = preattr(mail)
|
||||
mail = mail.lower()
|
||||
|
||||
#Emplacement de l'@
|
||||
a = mail.find('@')
|
||||
#Emplacement du . final
|
||||
b = mail.rfind('.')
|
||||
|
||||
# Les tests :
|
||||
# exactement un @
|
||||
# 2 à 4 caractères après le . final
|
||||
# @ pas en premier ni juste avant le dernier .
|
||||
if mail.count('@') != 1 \
|
||||
or not ( l-b >= 2 and l-b <= 4) \
|
||||
or a < 1 or b-a < 2:
|
||||
raise ValueError(u"Adresse mail incorrecte.")
|
||||
|
||||
# Pas de caractèrs bizarres
|
||||
for l in mail[:]:
|
||||
if not l in (string.lowercase + string.digits + '-_.@'):
|
||||
raise ValueError(u"Caractère interdit dans l'adresse mail (%s)." % l)
|
||||
|
||||
# Pour les vicieux
|
||||
if crans_allowed and mail.endswith(('crans.org','crans.ens-cachan.fr')):
|
||||
raise ValueError(u"Adresse mail @crans interdite ici !")
|
||||
|
||||
# On enlève les blacklistes mail_invalide
|
||||
return mail
|
||||
|
||||
##################################################################################
|
||||
### Définition des classes
|
||||
|
||||
|
@ -290,7 +321,7 @@ class CransLdap:
|
|||
|
||||
auto_search_champs = { \
|
||||
'adherent': \
|
||||
['nom', 'prenom', 'tel', 'mail', 'chbre', 'mailAlias', 'canonicalAlias'],
|
||||
['nom', 'prenom', 'tel', 'mail', 'chbre', 'mailAlias', 'canonicalAlias', 'mailExt'],
|
||||
'club': ['nom', 'chbre', 'uid'],
|
||||
'machineFixe': auto_search_machines_champs,
|
||||
'machineWifi': auto_search_machines_champs,
|
||||
|
@ -1992,31 +2023,7 @@ class Adherent(BaseProprietaire):
|
|||
if new == None:
|
||||
return decode(self._data.get('mail', [''])[0])
|
||||
|
||||
l, new = preattr(new)
|
||||
new = new.lower()
|
||||
|
||||
#Emplacement de l'@
|
||||
a = new.find('@')
|
||||
#Emplacement du . final
|
||||
b = new.rfind('.')
|
||||
|
||||
# Les tests :
|
||||
# exactement un @
|
||||
# 2 à 4 caractères après le . final
|
||||
# @ pas en premier ni juste avant le dernier .
|
||||
if new.count('@') != 1 \
|
||||
or not ( l-b >= 2 and l-b <= 4) \
|
||||
or a < 1 or b-a < 2:
|
||||
raise ValueError(u"Adresse mail incorrecte.")
|
||||
|
||||
# Pas de caractèrs bizarres
|
||||
for l in new[:]:
|
||||
if not l in (string.lowercase + string.digits + '-_.@'):
|
||||
raise ValueError(u"Caractère interdit dans l'adresse mail (%s)." % l)
|
||||
|
||||
# Pour les vicieux
|
||||
if re.match('.*crans.(org|ens-cachan.fr)$', new):
|
||||
raise ValueError(u"Adresse mail @crans interdite ici !")
|
||||
new = validate_mail(new)
|
||||
|
||||
# Il ne doit pas y avoir de compte
|
||||
self.supprimer_compte()
|
||||
|
@ -2042,6 +2049,20 @@ class Adherent(BaseProprietaire):
|
|||
mail += '@crans.org'
|
||||
return mail
|
||||
|
||||
def email_exterieur(self, new=None):
|
||||
"""Retourne ou paramètre l'adresse mail extérieure de l'adhérent"""
|
||||
if not new:
|
||||
return decode(self._data.get('mailExt', [''])[0])
|
||||
|
||||
new = validate_mail(new)
|
||||
|
||||
self._set('mailExt', [new])
|
||||
|
||||
# On enlève les blacklistes mail_invalide
|
||||
self.mail_invalide(False)
|
||||
|
||||
return new
|
||||
|
||||
def mail_invalide(self, valeur=None):
|
||||
"""
|
||||
L'adresse est invalide.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue