[admin/mail_invalide,gestion/] Modification du systeme de mail_invalide

Maintenant tout est gere par des blacklistes mail_invalide, ce qui est
beaucoup plus simple ...
(Le champ mailInvalide de la base LDAP peut maintenant etre supprime ...)

darcs-hash:20100318014002-ddb99-d7e616f0b5040fba54c55d49fcaad25dc55a5665.gz
This commit is contained in:
Michel Blockelet 2010-03-18 02:40:02 +01:00
parent 9e78235eff
commit b1239e1291
5 changed files with 42 additions and 75 deletions

View file

@ -97,7 +97,9 @@ blacklist_items = { u'bloq': u'Bloquage total de tous les services',
u'autodisc_virus': u'Autodisconnect pour virus',
u'autodisc_upload': u'Autodisconnect pour upload',
u'autodisc_p2p': u'Autodisconnect pour P2P',
u'ipv6_ra': u'Isolement pour RA' }
u'ipv6_ra': u'Isolement pour RA',
u'mail_invalide': u'Bloquage sur squid',
}
##################################################################################
### Droits possibles
@ -306,7 +308,7 @@ class CransLdap:
['etudes', 'paiement', 'carteEtudiant', 'aid', 'postalAddress',
'historique', 'blacklist', 'droits', 'uidNumber', 'uid', 'info',
'solde', 'controle', 'contourneGreylist', 'rewriteMailHeaders',
'ablacklist', 'homepageAlias', 'mailInvalide', 'charteMA',
'ablacklist', 'homepageAlias', 'charteMA',
'adherentPayant'], \
'club': \
['cid', 'responsable', 'paiement', 'historique', 'blacklist',
@ -1999,27 +2001,27 @@ class Adherent(BaseProprietaire):
# Les tests :
# exactement un @
# 2 ou 3 caractères après le . final
# 2 à 4 caractères après le . final
# @ pas en premier ni juste avant le dernier .
if new.count('@') != 1 \
or not ( l-b == 4 or l-b == 3) \
or a<1 or b-a<2:
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 interdits dans l'adresse mail (%s)." % l)
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")
raise ValueError(u"Adresse mail @crans interdite ici !")
# Il ne doit pas y avoir de compte
self.supprimer_compte()
self._set('mail', [new])
# L'adresse est supposée valide avant l'envoi du mail de bienvenue
# On enlève les blacklistes mail_invalide
self.mail_invalide(False)
# on renvoie le mail de bienvenue
@ -2042,23 +2044,32 @@ class Adherent(BaseProprietaire):
def mail_invalide(self, valeur=None):
u"""
L'adresse est invalide.
Au niveau de la base, on considère l'absence ou la présence
de mailInvalide=TRUE.
Au niveau de la base, on considère l'absence ou la présence d'une
blackliste mail_invalide.
"""
# tente de modifier la valeur
if valeur == True:
self._set('mailInvalide', ['TRUE'])
elif valeur == False:
self._set('mailInvalide', [])
elif valeur != None:
raise ValueError, u"mail_invalide prend un booléen comme argument"
# on met à jour la blackliste sur sable
self.services_to_restart('bl_mail_invalide')
# renvoie la valeur trouvée dans la base
return bool(self._data.get('mailInvalide', []))
if valeur == False:
# On enlève les blacklistes
bl_mail_list = [x for x in self.blacklist() if 'mail_invalide' in x]
now = time.time()
for bl_mail in bl_mail_list:
bl_data = bl_mail.split('$')
if int(bl_data[0]) <= now and bl_data[1] == '-':
self.blacklist((self.blacklist().index(bl_mail),
[bl_data[0], 'now', 'mail_invalide', bl_data[3]]))
elif int(bl_data[0]) >= now:
self.blacklist((self.blacklist().index(bl_mail),
[str(now-2), str(now-1), 'mail_invalide', bl_data[3]]))
elif valeur == None:
# On retourne l'existence d'une blackliste active ou future
bl_mail_list = [x for x in self.blacklist() if 'mail_invalide' in x]
now = time.time()
for bl_mail in bl_mail_list:
bl_data = bl_mail.split('$')
if (int(bl_data[0]) <= now and bl_data[1] == '-') or int(bl_data[0]) >= now:
return True
return False
else:
raise ValueError, u'mail_invalide ne peut prendre que None ou False en argument'
def charteMA(self, valeur=None):
u"""