[gest_crans] Possible de désactiver un compte.

* En cas de corruption de mot de passe par exemple
This commit is contained in:
Pierre-Elliott Bécue 2013-10-21 19:33:52 +02:00
parent 21a4c968b9
commit 7a49298de5
3 changed files with 49 additions and 3 deletions

View file

@ -115,6 +115,7 @@ def to_unicode(txt, enc=encoding):
return txt.decode("UTF-8")
except:
# Sinon c'est surement de l'iso
# donc on le décode en utf-8 \o/
return txt.decode("UTF-8")
def to_encoding(txt, enc=encoding):

View file

@ -645,6 +645,35 @@ def set_droits(adher):
dialog(arg)
return 1
def set_actif(adher):
u"""
Définition de l'état d'activité du compte.
"""
# Initialisation des différentes checkbox
inactif = on_off("0" in adher.active())
# Construction de la boîte de dialogue
texte = []
checklist = []
if state:
checklist.append(u'"1" "Compte mail/serveur désactivé" "%s"' % (inactif))
# Il y a qqch de modifiable, on construit la checklist
arg = u'--title "Statut du compte %s" ' % adher.Nom()
arg += u'--separate-output '
arg += u'--checklist "" 0 0 0 '
arg += u' '.join(checklist)
annul, result = dialog(arg)
if annul: return 1
# Traitement
if '1\n' in result:
adher.active(False)
else:
adher.active(True)
def del_adher(adher):
u"""
Destruction adhérent
@ -1664,9 +1693,7 @@ def modif_adher(adher):
arg += u'"Administratif" "Précâblage, carte d\'étudiant, études" '
if not payant:
arg += u'"Connexion" "Changer de type de connexion(gratuit->payant)" '
if adher.compte(): changement_compte = u", compte sur zamok"
else: changement_compte = u""
arg += u'"Etat-civil" "Nom, prénom%s" ' % changement_compte
arg += u'"Etat-civil" "Nom, prénom" '
if adher.chbre() == 'EXT':
arg += u'"Adresse" "Déménagement" '
else:
@ -1681,6 +1708,8 @@ def modif_adher(adher):
if isadm or isbureau:
if 'cransAccount' in adher._data['objectClass']:
arg += u'"Droits" "Modifier les droits alloués à cet adhérent" '
if 'shadowAccount' in adher._data['objectClass']:
arg += u'"Etat" "Passer le compte à actif ou inactif" '
if 'posixAccount' in adher._data['objectClass']:
arg += u'"Shell" "Changer le shell de cet utilisateur" '
if isdeconnecteur:
@ -1796,6 +1825,9 @@ def modif_adher(adher):
elif res[0] == 'GPGFingerprint':
__prompt_input_menu(adher.gpgFingerprint, 'GPG Fingerprint', u"Entrez ou modifier une empreinte GPG que l'adhérent possède (tout abus sera sanctionné).\nPour ajouter une empreinte modifier le dernier de la liste.")
elif res[0] == "Etat":
set_actif(adher)
elif res[0] == 'Shell':
while 1:
arg = u'--title "Nouveau shell pour %s" ' % adher.Nom()

View file

@ -2453,6 +2453,19 @@ class Adherent(BaseProprietaire):
return decode(login)
def active(self, status=None):
"""Permet d'activer ou désactiver un compte"""
if self.compte() == '':
raise EnvironmentError("Can't deactivate non-existing account")
if status == None:
return not (self._data.get("setExpire", [""])[0] == "0")
elif status == False:
self._set('setExpire', ["0"])
else:
self._set('setExpire', [])
return not (self._data.get("setExpire", [""])[0] == "0")
def canonical_alias(self, new=None):
""" Retourne ou défini l'alias canonique"""
if new == None: