Changement nom+prenom par Stphane.

Si l'adhrent n'a pas de compte ne pose pas de question.
Sinon demande si le compte est utilis
 si oui conserve le login inchang
 si non dtruit le compte et en cre un nouveau

darcs-hash:20051107000653-41617-8638a050728561810634ecd1e09c04917aca9987.gz
This commit is contained in:
pauget 2005-11-07 01:06:53 +01:00
parent 2f1b832f50
commit 11c381d8c8
2 changed files with 74 additions and 5 deletions

View file

@ -411,6 +411,64 @@ def set_mail_ext(adher) :
dialog(arg) dialog(arg)
return set_mail_ext(adher) 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 :
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
# 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()
# Affichage
annul, result = dialog(arg)
if annul: return
# Traitement
err = ''
try: adher.nom(result[0])
except ValueError, c: err += c.args[0] + '\n'
try: adher.prenom(result[1])
except ValueError, c: err += c.args[0] + '\n'
# Des erreurs ?
if err:
arg = u'--title "État-civil de %s" ' % adher.Nom()
arg+= u'--msgbox "%s\n\n" 0 0' % err
dialog(arg)
# On redemande
return set_etat_civil(adher)
# On change éventuellement le compte
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]
if no:
# 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):
# Le changement d'adresse a été annulé, on recommence tout
adher.restore()
return set_etat_civil(adher)
def set_compte(adher) : def set_compte(adher) :
""" """
Créé un compte sur vert pour un adhérent. Créé un compte sur vert pour un adhérent.
@ -1249,6 +1307,9 @@ def modif_adher(adher) :
arg = u'--title "Modification de %s" ' % adher.Nom() arg = u'--title "Modification de %s" ' % adher.Nom()
arg+= u'--menu "Que souhaitez vous modifier ?" 0 0 0 ' arg+= u'--menu "Que souhaitez vous modifier ?" 0 0 0 '
arg+= u'"Administratif" "Précâblage, carte d\'étudiant, études" ' arg+= u'"Administratif" "Précâblage, carte d\'étudiant, études" '
if adher.compte(): changement_compte = u", compte sur zamok"
else: changement_compte = u""
arg+= u'"État-civil" "Nom, prénom%s" ' % changement_compte
if adher.chbre() == 'EXT' : if adher.chbre() == 'EXT' :
arg+= u'"Adresse" "Déménagement" ' arg+= u'"Adresse" "Déménagement" '
else : else :
@ -1272,6 +1333,8 @@ def modif_adher(adher) :
if res[0]=='Etudes' : if res[0]=='Etudes' :
set_etudes(adher) set_etudes(adher)
elif res[0] == 'État-civil':
set_etat_civil(adher)
elif res[0]=='Administratif' : elif res[0]=='Administratif' :
if not set_admin(adher) : if not set_admin(adher) :
set_etudes(adher) set_etudes(adher)

View file

@ -1561,17 +1561,23 @@ class adherent(base_proprietaire):
if sre.match('.*crans.(org|ens-cachan.fr)$',new): if sre.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]) self._set('mail',[new])
# Il ne doit pas y avoir de compte return new
def supprimer_compte(self):
u"""
Supprime le compte sur zamok. Penser à définir l'adresse mail après.
"""
self._set('mail', [''])
self._data['objectClass'] = [ 'adherent' ] self._data['objectClass'] = [ 'adherent' ]
for c in [ 'uid', 'cn', 'shadowLastChange', 'shadowMax', 'shadowWarning', 'loginShell', 'userPassword', 'uidNumber', 'gidNumber', 'homeDirectory', 'gecos', 'droits','mailAlias', 'cannonicalAlias' ]: for c in [ 'uid', 'cn', 'shadowLastChange', 'shadowMax', 'shadowWarning', 'loginShell', 'userPassword', 'uidNumber', 'gidNumber', 'homeDirectory', 'gecos', 'droits','mailAlias', 'cannonicalAlias' ]:
try: self._data.pop(c) try: self._data.pop(c)
except: pass except: pass
return new
def etudes(self,index_or_new): def etudes(self,index_or_new):
""" """
Retourne l'un des 3 champs études (selon index_or_new si entier) Retourne l'un des 3 champs études (selon index_or_new si entier)