check_uniqueness ne se comportait pas mieux qu'avant d20fa54614

This commit is contained in:
Pierre-Elliott Bécue 2015-11-01 04:15:30 +01:00
parent c0d2e04cc7
commit 00f67697ee

View file

@ -756,25 +756,30 @@ class mail(rightProtectedAttr):
attr = self.__class__.__name__ attr = self.__class__.__name__
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', 'mailExt']:
mail = str(self) mail = str(self)
# On commence par vérifier auprès du serveur SMTP
# si l'adresse email est prise sur le réseau. Cela permet _, domain = mail.split('@')
# de tester aussi les adresses statiquement écrites dans if domain in config.dns.mail_crans:
# aliases.db. # 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]
# Si le SMTP n'est pas joignable, on joue à la roulette smtp.close()
# russe en demandant à LDAP, sans vérifier les aliases except:
# statiques… print 'Serveur de mail injoignable'
check = self.conn.search(u'mail=%s' % mail)
if len(check) >= 1: check = self.conn.search(
res = True u'(|(mail=%(mail)s)(mailAlias=%(mail)s)(canonicalAlias=%(mail)s)(mailExt=%(mail)s))' % {
'mail': mail,
}
)
if len(check) >= 1:
res = True
if res: if res:
raise ValueError("Le mail %s est déjà pris." % (str(self))) raise ValueError("Le mail %s est déjà pris." % (str(self)))
@ -1614,6 +1619,7 @@ class gpgMail(mail):
legend = "Mail associé à une clef gpg" legend = "Mail associé à une clef gpg"
can_modify = [soi, nounou] can_modify = [soi, nounou]
ldap_name = "gpgMail" ldap_name = "gpgMail"
def check_uniqueness(self, liste_exclue): def check_uniqueness(self, liste_exclue):
super(mail, self).check_uniqueness(liste_exclue) super(mail, self).check_uniqueness(liste_exclue)