diff --git a/gestion/gest_crans2.py b/gestion/gest_crans2.py deleted file mode 100755 index 0ec2efc9..00000000 --- a/gestion/gest_crans2.py +++ /dev/null @@ -1,254 +0,0 @@ -#! /usr/bin/env python -# -*- coding: utf-8 -*- - -u"""Nouvelle interface utilisateur du système de gestion des machines et -adhérents du crans. Largement inspirée par l'ancienne version écrite par -Frédéric Pauget. - -Copyright (C) 2009 Antoine Durand-Gasselin -Licence : GPLv2 - -Utilise des wizard.Scenario des objets qu'on construit avec wizard.Steps -(qu'on construit avec des dialogwizard.DialogStepGenerator). Ces -Scenario sont ensuite lancés: transformés en wizard.Running, qui prend -en argument un dictionnaire, et renvoie un dictionnaire rempli selon les -choix faits par l'utilisateur dans l'interface dialog. (reste à bien -gérer les exceptions et les erreurs). - -Idéalement, on \"tranforme\" les crans_ldap.Adherents en dicos, que l'on -modifie avec des dialog.Running, et on les sauve dans la base de donnée. -Bon là où ça se complique c'est qu'il faudrait reporter en temps réel -les erreurs qui sont renvoyées par crans_ldap. - -Après on peut inscrire des gens de deux manières différentes: soit avec -un crans_ldap.Adherent(), soit avec un dico construit à partir d'infos -rentrés depuis la préinscription. - -""" - -### Rapport de bug automatique -# Destinataires, si vide n'envoi rien -To = ['fred@crans.org', 'glondu@crans.org', 'dimino@crans.org', - 'salles@crans.org', 'cohen@crans.org', 'segaud@crans.org', - 'adg@crans.org'] - -import os, sys -sys.path.append('/usr/scripts') - -from ldap_crans import crans_ldap, script_utilisateur -import user_tests -from config import ann_scol -from crans.dialogwizard.wizard import Scenario, Running, \ - step_scenario, unit_scenario -from crans.dialogwizard.dialogwizard import DialogStepGenerator, error_handler - -db = crans_ldap() -droits = db.search("uid=%s" % script_utilisateur)['adherent'][0].droits() -isadm = user_tests.isadm() -isdeconnecteur = user_tests.isdeconnecteur() -isimprimeur = u"Imprimeur" in droits -iscontroleur = u'Tresorier' in droits -isbureau = u'Bureau' in droits -encoding = sys.stdin.encoding or 'utf-8' - -if u'Nounou' in droits and not os.environ.has_key('DIALOGRC') \ - and not os.path.exists(os.path.expanduser('~/.dialogrc')): - os.environ['DIALOGRC'] = '/etc/dialog.rc' - -dsgen = DialogStepGenerator(u'Gestion des adhérents et machines du Crans') - -######################################################################### -## Fonctions de remplissage ou modification des paramètres d'un adhérent - -prompt_new_adher = \ - dsgen.form_step ( - u"Inscription adhérent", '', - [{'var': 'nom', 'label': 'Nom :', 'field_len': 20}, - {'var': 'prenom', 'label': u'Prénom :', 'field_len': 20}, - {'label': u'Numéro de téléphone', 'var': 'tel', 'field_len': 13}, - {'label': u'Chambre (EXT si pas sur le campus) :', - 'var': 'chbre', 'field_len': 5} ]) - -prompt_addr_ext = \ - dsgen.form_step ( - u"Adresse extérieure de %(nom)s", '', - [{'var': 'addr1', 'label': 'Adresse', 'field_len': 40}, - {'var': 'addr2', 'label': '', 'field_len': 40}, - {'var': 'addr3', 'label': 'Code Postal :', 'field_len': 6}, - {'var': 'addr4', 'label': 'Ville :', 'field_len': 20}]) - -def prompt_etudes(): - etab_step = \ - dsgen.select_step( - u'Études de %(nom)s (1/3)', - u"Choisissez l'établissement :", - 'etud1', - [("ENS", u"ENS -- École Normale Supérieure de Cachan"), - ("IUT Cachan", u"IUT Cachan"), - ("Maximilien Sorre", u"Maximilien Sorre"), - ("Gustave Eiffel", u"Gustave Eiffel"), - ("P1", u"P1 -- Université Panthéon Sorbonne"), - ("P2", u"P2 -- Université Panthéon Assas"), - ("P3", u"P3 -- Université de la Sorbonne Nouvelle"), - ("P4", u"P4 -- Université Paris Sorbonne"), - ("P5", u"P5 -- Université René Descartes"), - ("P6", u"P6 -- Université Pierre et Marie Curie"), - ("P7", u"P7 -- Université Denis Diderot"), - ("P8", u"P8 -- Université Vincennes Saint Denis"), - ("P9", u"P9 -- Université Paris Dauphine"), - ("P10", u"P10 -- Université de Nanterre"), - ("P11", u"P11 -- Université de Paris Sud (Orsay)"), - ("P12", u"P12 -- Université Val de Marne"), - ("P13", u"P13 -- Université Paris Nord"), - ("IUFM", u"IUFM"), - ("Personnel ENS", u"Personnel ENS"), - ("Personnel CROUS", u"Personnel CROUS"), - ("autre", u"autre")]) - - etab_other = \ - dsgen.input_step(u'Études de %(nom)s (1/3)', - u"Préciser l'établissement :", - 'etud1') - - year_ens_step = \ - dsgen.select_step(u"Études de %(nom)s (2/3)", - u"Choisissez l'année administrative", - 'etud2', - [("1", u"License"), - ("2", u"Master 1"), - ("3", u"Agrégation"), - ("4", u"Master 2"), - ("5", u"1ère année thèse"), - ("6", u"2ème année thèse"), - ("7", u"3ème année thèse"), - ("", "Autre")]) - - year_step = \ - dsgen.input_step(u"Études de %(nom)s (2/3)", - u"Année adminstrative :\nET UNIQUEMENT l'ANNEE :" - "la section sera demandée après.", - 'etud2') - - section_step = \ - dsgen.input_step(u'Études de %(nom)s (3/3)', - u'Section :', - 'etud3') - - section_step = \ - dsgen.select_step( - u'Études de %(nom)s (3/3)', - u'Choisissez la section :', - 'etud3', - [ ("A0", "Informatique"), - ("A1", "Mathématiques"), - ("A2", "Physique fondamentale"), - ("A''2", "Chimie"), - {'label': "A'2", 'item': "Physique appliquée", - 'show_cond': (lambda d: d['etud2'] in ['3','4'])}, - ("A3", "Biochimie"), - {'label': "B123", 'item':"Technologie mécanique", - 'show_cond': (lambda d: d['etud2'] == '1') }, - {'label': "B1", 'item': "Mécanique", - 'show_cond': (lambda d: d['etud2'] in ['2','3','4'])}, - {'label': "B2", 'item': "Génie civil", - 'show_cond': (lambda d: d['etud2'] in ['2','3','4'])}, - {'label': "B3", 'item': "Génie mécanique", - 'show_cond': (lambda d: d['etud2'] in ['2','3','4'])}, - ("EEA", "Électronique, électrotechnique et automatique"), - ("C", "Art et création industrielle"), - ("D2", "Economie gestion"), - ("D3", "Sciences sociales"), - ("E", "Anglais") ]) - - labo_step = \ - dsgen.select_step( - u'Études de %(nom)s (3/3)', - u'Choisissez le laboratoire :', - 'etud3', - [ ("CMLA", u"Centre de Mathématiques et de Leurs Applications"), - ("GAPP", u"Groupe d'Analyse des Politiques Publiques"), - ("IDHE", u"Institutions et Dynamiques Historiques de l'Economie"), - ("LBPA", u"Laboratoire de Biotechnologies " - u"et Pharmacologie génétique Appliquées"), - ("LMT", u"Laboratoire de Mécanique et Technologie"), - ("LPQM", u"Laboratoire de Photonique Quantique et Moléculaire"), - ("LSV", u"Laboratoire de Spécification et Vérification"), - ("LURPA", u"Laboratoire Universitaire de Recherche " - u"en Production Automatisée"), - ("PPSM", u"Laboratoire de Photophysique et " - u"Photochimie Supramoléculaires et Macromoléculaires"), - ("SATIE", u"Systèmes et Applications des Technologies" - u" de l'Information et de l'Energie"), - ("STEF", u"Sciences Techniques Education Formation") ]) - - etudes_scenar = Scenario() - etudes_scenar.nest(etab_step) - - ens_scenar = Scenario() - ens_scenar.nest(year_ens_step) - ens_scenar.branch((lambda d: d['etud2'] in ['1', '2', '3', '4']), - step_scenario(section_step), - step_scenario(labo_step)) - - other_etab_scenar = Scenario() - other_etab_scenar.nest(year_step) - other_etab_scenar.nest(section_step) - - etudes_scenar.branch((lambda d: d['etud1'] == 'other'), - step_scenario(etab_other), - unit_scenario()) - - etudes_scenar.branch((lambda d: d['etud1'] == 'ENS'), - ens_scenar, other_etab_scenar) - - return etudes_scenar - -prompt_connexion = \ - dsgen.select_step (u"Type de connexion", - u'Inscription adhérent', - 'typ', [('1', 'Adhésion'), - ('2', 'Inscription gratuite')]) - -prompt_papiers = \ - dsgen.checklist_step( - '', u'État administratif de %(nom)s', - [('carte', u"Carte d'étudiant %s-%s fourniee" % (ann_scol, ann_scol+1)), - ('paiement%s' % ann_scol, u'Cotisation %s réglée et charte signée' % ann_scol), - {'var': 'chartema', 'item': u'Charte des membres actifs signée', - 'show_cond': (lambda d: isbureau or isadm)}, - {'var': '+p', 'item': u'Paiement et charte vérifiées', - 'show_cond': (lambda d: iscontroleur)}, - {'var': '+c', 'item': u"Carte d'étudiant vérifiée", - 'show_cond': (lambda d: iscontroleur)} - ]) - -prompt_login = \ - dsgen.input_step(u'Choix du login pour %(nom)s', - u'Le choix du login doit faire au maximum 15 caractères\n' - u"Il ne doit *pas* être un pseudo ou un prénom," - u'mais doit être relié au nom de famille\n' - u'Seuls les caractères alphabétiques et le - sont autorisés', - 'login') - -prompt_mailaddress = \ - dsgen.input_step(u'Addresse mail extérieure de %(nom)s', - '', 'mail') - -dummy_scenar = Scenario() -dummy_scenar.nest(prompt_new_adher) -dummy_scenar.nest(prompt_addr_ext) -dummy_scenar.quote(prompt_etudes()) - -print Running(dummy_scenar, env= db.search('nom=durand-gasselin')['adherent'][0], handle = error_handler).run() - -# def inscrit_in_ldap(adherent): -# """Prend en argument un dictionnaire, et l'inscrit dans la base ldap -# -# Les champs suivants ont OBLIGATOIRES: -# nom, prenom, chbre, mail, login -# -# Les champs suivants sont OPTIONNELS: -# carte, paiementYEAR, tel, etud1, etud2, etud3, addr1, addr2, addr3, addr4 -# """ -# -# adher = Adherent()