Prise en charge de l'attribut mailExterieur comme redirection.

This commit is contained in:
Pierre-Elliott Bécue 2015-02-18 19:58:33 +01:00
parent 60d7087c60
commit 962d9df0f3
5 changed files with 100 additions and 54 deletions

View file

@ -392,11 +392,11 @@ def set_etudes(adher):
dialog(arg)
return set_etudes(adher)
def set_mail(adher):
def set_contact(adher):
u"""
Choix d'une adresse mail crans ou extérieure.
Retourne ensuite le résultat de :
* set_mail_ext si adresse ext
* set_mail si adresse ext
* set_compte si compte crans
"""
if u'Nounou' in adher.droits() and not isadm:
@ -406,7 +406,7 @@ def set_mail(adher):
return
if not isinstance(adher, Club) and not adher.adherentPayant():
set_mail_ext(adher)
set_mail(adher)
return
while 1:
@ -426,31 +426,72 @@ def set_mail(adher):
elif result[0].split()[1] == u'un':
if not set_compte(adher): break
else:
if not set_mail_ext(adher): break
if not set_mail(adher): break
def set_mail_ext(adher):
u"""
Demande l'adresse mail extérieure d'un adhérent
def set_mail(adher):
"""Demande l'adresse mail extérieure d'un adhérent
"""
default = adher.mail()
if default.endswith('@crans.org'):
# C'était une adresse crans
default = ''
arg = u'--title "Adresse mail extérieure pour %s" ' % adher.Nom()
arg = u'--title "Adresse mail pour %s" ' % adher.Nom()
arg += u'--inputbox "Adresse : " 0 0 "%s"' % default
annul, result = dialog(arg)
if annul: return 1
try: adher.mail(result[0])
except ValueError, c:
arg = u'--title "Adresse mail de %s" ' % adher.Nom()
arg += u'--msgbox "%s\n\n\n" 0 0' % to_unicode(c.args[0])
dialog(arg)
return set_mail(adher)
def set_mail_ext(adher):
"""Récupère une éventuelle adresse de redirection en cas de choix de compte
Crans. Permet en règle générale d'ajouter un mail extérieur au moins pour
les récupérations de mot de passe ou autre.
"""
if not adher.compte():
return 0
if u'Nounou' in adher.droits() and not isadm:
arg = u'--title "Adresse mail extérieure de %s" ' % adher.Nom()
arg += u'--msgbox "Vous n\'avez pas les droits necessaires pour effectuer cette opération.\n\n\n" 0 0'
dialog(arg)
return
no = False
if 'compte' in adher.modifs:
arg = u'--title "Redirection des mails de %s" ' % (adher.Nom(),)
arg += u'--colors --yesno '
arg += u'"L\'adhérent souhaite-t-il mettre en place une redirection de ses emails vers une autre boîte ?\n'
arg += u'Cette redirection lui permettra aussi de récupérer son mot de passe Crans en cas de perte de celui-ci." '
arg += u'0 0'
no, _ = dialog(arg)
if no:
return 0
arg = u'--title "Adresse mail extérieure pour %s" ' % adher.Nom()
arg += u'--inputbox "Adresse : " 0 0 "%s"' % default
annul, result = dialog(arg)
if annul:
return 1
try:
adher.email_exterieur(result[0])
except ValueError as c:
arg = u'--title "Adresse mail extérieure de %s" ' % adher.Nom()
arg += u'--msgbox "%s\n\n\n" 0 0' % to_unicode(c.args[0])
dialog(arg)
return set_mail_ext(adher)
def set_etat_civil(adher):
u"""
"""
Modifie l'état-civil (nom, prénom) d'un adhérent.
"""
if u'Nounou' in adher.droits() and not isadm:
@ -502,7 +543,7 @@ def set_etat_civil(adher):
# L'utilisateur n'utilise pas son compte, on le supprime...
adher.supprimer_compte()
# ..et on le recrée (ou on met une adresse mail extérieure)
if set_mail(adher):
if set_contact(adher):
# Le changement d'adresse a été annulé, on recommence tout
adher.restore()
return set_etat_civil(adher)
@ -2027,7 +2068,7 @@ def new_adher(adher):
* set_bases
* set_etudes
* set_admin
* set_mail
* set_contact
* set_rque
Retourne 1 si annulation.
"""
@ -2035,12 +2076,15 @@ def new_adher(adher):
while True:
if set_bases(adher): return 1
steps = [set_etudes,
set_adhesion,
set_connexion,
set_admin,
set_mail,
set_rque]
steps = [
set_etudes,
set_adhesion,
set_connexion,
set_admin,
set_contact,
set_mail_ext,
set_rque,
]
step = 0
while step < len(steps):
@ -2084,6 +2128,8 @@ def modif_adher(adher):
arg += u'"Telephone" "Changement de numéro de téléphone" '
if payant:
arg += u'"Mail" "Créer un compte ou changer l\'adresse mail de contact" '
if 'cransAccount' in adher._data['objectClass']:
arg += u'"MailExt" "Ajouter une adresse mail de contact extérieur." '
arg += u'"Alias" "Créer ou supprimer un alias mail" '
arg += u'"GPGFingerprint" "Ajouter ou supprimer une empreinte GPG" '
arg += u'"Remarque" "Ajouter ou modifer un commentaire" '
@ -2111,7 +2157,9 @@ def modif_adher(adher):
elif res[0] == 'Administratif':
set_admin(adher)
elif res[0] == 'Mail':
set_mail(adher)
set_contact(adher)
elif res[0] == 'MailExt':
set_mail_ext(adher)
elif res[0] == 'Remarque':
set_rque(adher)
elif res[0] == 'Droits':