Commit 1fc605c7 authored by Pauline Pommeret's avatar Pauline Pommeret

[gest_crans] set_etat_civil passe une liste a dialog

parent c3f0940d
......@@ -883,57 +883,106 @@ def set_mail_ext(adher):
def set_etat_civil(adher):
"""
Modifie l'état-civil (nom, prénom) d'un adhérent.
Modifie l'état-civil (nom, prénom) d'un adhérent si l'utilisateur est en
droit de le faire.
Paramètres:
- ``adher`` : instance de la classe :py:class:`ldap_crans.Adherent`
Utilises:
- :py:func:`dialog`
- :py:class:`ldap_crans.Adherent`
- :py:func:`set_mail`
Peut lever:
- :py:exc:`ValueError`
Retournes:
- None ou 1 (en cas de problème)
- ``adher``
"""
if u'Nounou' in adher.droits() and not isadm:
arg = u'--title "Adresse mail 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
# Si l'adhérent à modifier est Nounou et que l'utilisateur n'est pas
# administrateur au sens de :py:func:`user_test.isadm`, on dit à
# l'utilisateur qu'il est bien mignon mais qu'il a pas le droit.
arguments_echec = [
"--title", "Adresse mail de " + adher.Nom(),
"--msgbox", "T'es bien mignon(ne) mais t'as le droit de faire ça.\n" + \
"Il faut être administrateur pour modifier le mail d'une nounou.\n\n\n", "0", "0"
]
# Affichage de la boîte dialogue de "NOPE"
dialog(arguments_echec)
return 1
# Construction de la boite de dialogue
arg = u'--title "État-civil de %s" ' % adher.Nom()
arg += u'--form "" 0 0 0 '
arg += u'"Nom :" 1 1 "%s" 1 13 20 20 ' % adher.nom()
arg += u'"Prénom :" 2 1 "%s" 2 13 20 20 ' % adher.prenom()
arguments = [
"--title", "État-civil de" + adher.Nom(),
"--form", "", "0", "0", "0",
"Nom :", "1", "1", adher.nom(), "1", "13", "20", "20",
"Prénom :", "2", "1", adher.prenom(), "2", "13", "20", "20"
]
# Affichage
annul, result = dialog(arg)
if annul: return
# Affichage de la boîte de dialogue
code_erreur, sortie = dialog(arguments)
# Traitement
err = ''
try: adher.nom(result[0])
except ValueError, c: err += c.args[0] + '\n'
if code_erreur:
# Si le code d'erreur vaut 1, donc si l'utilisateur a annulé
return 1
try: adher.prenom(result[1])
except ValueError, c: err += c.args[0] + '\n'
# Gestion des erreurs
erreur = ''
try:
# Tentative de peuplement de la variable nom
adher.nom(result[0])
except ValueError as exception:
erreur += exception.args[0] + '\n'
# Des erreurs ?
if err:
arg = u'--title "État-civil de %s" ' % adher.Nom()
arg += u'--msgbox "%s\n\n" 0 0' % to_unicode(err)
dialog(arg)
# On redemande
try:
# Tentative de peuplement de la variable prenom
adher.prenom(result[1])
except ValueError as exception:
erreur += exception.args[0] + '\n'
if erreur:
# Construction de la liste des arguments à passer à dialog pour
# construire une boîte d'erreur
arguments_echec = [
"--title", "État-civil de " + adher.Nom(),
"--msgbox", to_unicode(erreur) + "\n\n", "0", "0"
]
# Affichage de la boîte de dialogue
dialog(arguments_echec)
# Et on recommence tout le processus
return set_etat_civil(adher)
# On change éventuellement le compte
# Si l'état civil est modifié, on veut pouvoir (éventuellement) modifier
# le compte Crans de l'adhérent (s'il en a un)
if adher.compte():
# On demande au câbleur s'il faut garder le compte ou pas
arg = u'--title "Modification du compte de %s" ' % adher.Nom()
arg += u'--colors --defaultno --yesno "Changer le login de l\'adhérent ?\n'
arg += u'Son login actuel est %s.\n\n' % adher.compte()
arg += u'Choisir Oui si l\'adhérent n\'a jamais utilisé son compte.\n\n'
arg += u'\Zr\Z1AVERTISSEMENT :\n'
arg += u'Le changement de login entraîne la suppression irréversible du compte, '
arg += u'et donc de tous les fichiers, mails, etc. associés !\Z0\ZR\n\n\n" '
arg += u'0 0'
no = not dialog(arg)[0]
# Si l'adhérent a un compte Crans, on prépare la liste des arguments
# à passer au programme dialog.
arguments = [
"--title", "Modification du compte de " + adher.Nom(),
"--colors", "--defaultno", "--yesno",
"Changer le login de l'adhérent ?\n" + \
"Son login actuel est " + adher.compte() + ".\n\n" + \
"Choisir Oui si l'adhérent n'a jamais utilisé son compte.\n\n" + \
# \Zr\Z1 et \Zn sont là pour faire l'effet stabilo rouge
"\Zr\Z1AVERTISSEMENT :\n" + \
"Le changement de login entraîne la suppression irréversible " + \
"du compte et donc de tous les fichiers, mails, etc associés !\Zn\n\n\n",
"0", "0"
]
if no:
# L'utilisateur n'utilise pas son compte, on le supprime...
# Affichage de la boîte de dialogue
non, _ = dialog(arguments)
if not non:
# Si l'utilisateur a dit "Oui", c'est que l'adhérent n'utilise pas
# son compte et que l'on peut le supprimer.
adher.supprimer_compte()
# ..et on le recrée (ou on met une adresse mail extérieure)
# et on le recrée (ou on met une adresse mail extérieure)
if set_mail(adher):
# Le changement d'adresse a été annulé, on recommence tout
adher.restore()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment