Compare commits

...
Sign in to create a new pull request.

1 commit

Author SHA1 Message Date
Pauline Pommeret
1fc605c7e0 [gest_crans] set_etat_civil passe une liste a dialog 2015-03-05 14:06:48 +01:00

View file

@ -883,57 +883,106 @@ def set_mail_ext(adher):
def set_etat_civil(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: if u'Nounou' in adher.droits() and not isadm:
arg = u'--title "Adresse mail de %s" ' % adher.Nom() # Si l'adhérent à modifier est Nounou et que l'utilisateur n'est pas
arg += u'--msgbox "Vous n\'avez pas les droits necessaires pour effectuer cette opération.\n\n\n" 0 0' # administrateur au sens de :py:func:`user_test.isadm`, on dit à
dialog(arg) # l'utilisateur qu'il est bien mignon mais qu'il a pas le droit.
return 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 # Construction de la boite de dialogue
arg = u'--title "État-civil de %s" ' % adher.Nom() arguments = [
arg += u'--form "" 0 0 0 ' "--title", "État-civil de" + adher.Nom(),
arg += u'"Nom :" 1 1 "%s" 1 13 20 20 ' % adher.nom() "--form", "", "0", "0", "0",
arg += u'"Prénom :" 2 1 "%s" 2 13 20 20 ' % adher.prenom() "Nom :", "1", "1", adher.nom(), "1", "13", "20", "20",
"Prénom :", "2", "1", adher.prenom(), "2", "13", "20", "20"
]
# Affichage # Affichage de la boîte de dialogue
annul, result = dialog(arg) code_erreur, sortie = dialog(arguments)
if annul: return
# Traitement if code_erreur:
err = '' # Si le code d'erreur vaut 1, donc si l'utilisateur a annulé
try: adher.nom(result[0]) return 1
except ValueError, c: err += c.args[0] + '\n'
try: adher.prenom(result[1]) # Gestion des erreurs
except ValueError, c: err += c.args[0] + '\n' erreur = ''
try:
# Tentative de peuplement de la variable nom
adher.nom(result[0])
except ValueError as exception:
erreur += exception.args[0] + '\n'
# Des erreurs ? try:
if err: # Tentative de peuplement de la variable prenom
arg = u'--title "État-civil de %s" ' % adher.Nom() adher.prenom(result[1])
arg += u'--msgbox "%s\n\n" 0 0' % to_unicode(err) except ValueError as exception:
dialog(arg) erreur += exception.args[0] + '\n'
# On redemande
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) 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(): if adher.compte():
# On demande au câbleur s'il faut garder le compte ou pas # Si l'adhérent a un compte Crans, on prépare la liste des arguments
arg = u'--title "Modification du compte de %s" ' % adher.Nom() # à passer au programme dialog.
arg += u'--colors --defaultno --yesno "Changer le login de l\'adhérent ?\n' arguments = [
arg += u'Son login actuel est %s.\n\n' % adher.compte() "--title", "Modification du compte de " + adher.Nom(),
arg += u'Choisir Oui si l\'adhérent n\'a jamais utilisé son compte.\n\n' "--colors", "--defaultno", "--yesno",
arg += u'\Zr\Z1AVERTISSEMENT :\n' "Changer le login de l'adhérent ?\n" + \
arg += u'Le changement de login entraîne la suppression irréversible du compte, ' "Son login actuel est " + adher.compte() + ".\n\n" + \
arg += u'et donc de tous les fichiers, mails, etc. associés !\Z0\ZR\n\n\n" ' "Choisir Oui si l'adhérent n'a jamais utilisé son compte.\n\n" + \
arg += u'0 0' # \Zr\Z1 et \Zn sont là pour faire l'effet stabilo rouge
no = not dialog(arg)[0] "\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: # Affichage de la boîte de dialogue
# L'utilisateur n'utilise pas son compte, on le supprime... 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() 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): if set_mail(adher):
# Le changement d'adresse a été annulé, on recommence tout # Le changement d'adresse a été annulé, on recommence tout
adher.restore() adher.restore()