diff --git a/gestion/dialog/blacklist.py b/gestion/dialog/blacklist.py index 9c73d0d9..61746d76 100644 --- a/gestion/dialog/blacklist.py +++ b/gestion/dialog/blacklist.py @@ -21,6 +21,7 @@ import lc_ldap.attributs as attributs import lc from CPS import TailCall, tailcaller, Continue +from CPS import unicode_of_Error class Dialog(lc.Dialog): diff --git a/gestion/dialog/lc.py b/gestion/dialog/lc.py index 34f61ad9..8a593481 100644 --- a/gestion/dialog/lc.py +++ b/gestion/dialog/lc.py @@ -26,11 +26,12 @@ from CPS import TailCall, tailcaller, Continue, TailCaller class Dialog(CPS.Dialog): - def __init__(self, debug_enable=False, ldap_test=False): + def __init__(self, debug_enable=False, ldap_test=False, custom_user=None): super(Dialog, self).__init__(debug_enable=debug_enable) # On initialise le moteur de rendu en spécifiant qu'on va faire du dialog printing.template(dialog=True) self.ldap_test = ldap_test + self.custom_user = custom_user self.check_ldap() def has_right(self, liste, obj=None): @@ -67,14 +68,12 @@ class Dialog(CPS.Dialog): # Si un nom d'utilisateur est donné sur la ligne de commande # et qu'on a les droits nounou, on l'utilise - if sys.argv[1:] and attributs.nounou in self.conn.droits: - for u in sys.argv[1:]: - luser=self.conn.search(u'(&(uid=%s)(objectClass=cransAccount))' % u) - if luser: - self.conn.current_login = u - self.conn.droits = [str(d) for d in luser[0]['droits']] - self.conn.dn = luser[0].dn - break + if self.custom_user and attributs.nounou in self.conn.droits: + luser=self.conn.search(u'(&(uid=%s)(objectClass=cransAccount))' % self.custom_user) + if luser: + self.conn.current_login = self.custom_user + self.conn.droits = [str(d) for d in luser[0]['droits']] + self.conn.dn = luser[0].dn a = attributs allowed_right = [a.cableur, a.tresorier, a.bureau, a.nounou, a.imprimeur] for droit in allowed_right: diff --git a/gestion/gest_crans_lc.py b/gestion/gest_crans_lc.py index d42aca33..d57ba67d 100755 --- a/gestion/gest_crans_lc.py +++ b/gestion/gest_crans_lc.py @@ -15,6 +15,7 @@ Licence : GPLv3 import os import sys +import argparse if '/usr/scripts' not in sys.path: sys.path.append('/usr/scripts') @@ -152,5 +153,10 @@ class GestCrans(adherent.Dialog, club.Dialog, machine.Dialog): if __name__ == '__main__': - main(GestCrans(ldap_test="--test" in sys.argv[1:], debug_enable="--debug" in sys.argv[1:])) + parser = argparse.ArgumentParser(description='Interface utilisateur du système de gestion des machines et adhérents du crans') + parser.add_argument('--test', help='Utiliser la base de test', dest='ldap_test', default=False, action='store_true') + parser.add_argument('--debug', help='Afficher des info de débug comme les tracebacks', dest='debug_enable', default=False, action='store_true') + parser.add_argument('login', help="Se connecter en tant qu'un autre utilisateur", type=str, default=None, nargs='?') + args = parser.parse_args() + main(GestCrans(ldap_test=args.ldap_test, debug_enable=args.debug_enable, custom_user=args.login)) os.system('clear')