check_uniqueness sur les attributs de type mail corrigée
This commit is contained in:
parent
c35878562a
commit
d20fa54614
1 changed files with 19 additions and 14 deletions
33
attributs.py
33
attributs.py
|
@ -743,22 +743,27 @@ class mail(rightProtectedAttr):
|
||||||
if str(self) in liste_exclue:
|
if str(self) in liste_exclue:
|
||||||
return
|
return
|
||||||
if attr in ["mailAlias", "canonicalAlias", 'mail']:
|
if attr in ["mailAlias", "canonicalAlias", 'mail']:
|
||||||
mail, end = str(self).split('@', 1)
|
mail = str(self)
|
||||||
if end.startswith('crans'):
|
# On commence par vérifier auprès du serveur SMTP
|
||||||
try:
|
# si l'adresse email est prise sur le réseau. Cela permet
|
||||||
smtp = smtplib.SMTP(smtpserv)
|
# de tester aussi les adresses statiquement écrites dans
|
||||||
smtp.putcmd("vrfy", mail)
|
# aliases.db.
|
||||||
res = smtp.getreply()[0] in [250, 252]
|
try:
|
||||||
smtp.close()
|
smtp = smtplib.SMTP(smtpserv)
|
||||||
except:
|
smtp.putcmd("vrfy", mail)
|
||||||
raise ValueError('Serveur de mail injoignable')
|
res = smtp.getreply()[0] in [250, 252]
|
||||||
|
smtp.close()
|
||||||
if res:
|
except:
|
||||||
raise ValueError("Le mail %s est déjà pris." % (str(self)))
|
raise ValueError('Serveur de mail injoignable')
|
||||||
else:
|
# Si le SMTP n'est pas joignable, on joue à la roulette
|
||||||
|
# russe en demandant à LDAP, sans vérifier les aliases
|
||||||
|
# statiques…
|
||||||
check = self.conn.search(u'mail=%s' % mail)
|
check = self.conn.search(u'mail=%s' % mail)
|
||||||
if len(check) >= 1:
|
if len(check) >= 1:
|
||||||
raise ValueError("Le mail %s est déjà pris." % (str(self)))
|
res = True
|
||||||
|
|
||||||
|
if res:
|
||||||
|
raise ValueError("Le mail %s est déjà pris." % (str(self)))
|
||||||
|
|
||||||
def parse_value(self, mail):
|
def parse_value(self, mail):
|
||||||
if not re.match(u'^[-_.0-9A-Za-z]+@([A-Za-z0-9]{1}[A-Za-z0-9-_]+[.])+[a-z]{2,6}$', mail):
|
if not re.match(u'^[-_.0-9A-Za-z]+@([A-Za-z0-9]{1}[A-Za-z0-9-_]+[.])+[a-z]{2,6}$', mail):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue