[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:
parent
9e78235eff
commit
b1239e1291
5 changed files with 42 additions and 75 deletions
|
@ -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"""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue