[gestion] suppression de gest_crans2\
darcs-hash:20091017131348-bd074-43657d1401c4cb708bee565ca85f883ac1030a2c.gz
This commit is contained in:
parent
f84db66b7e
commit
6396529c77
1 changed files with 0 additions and 254 deletions
|
@ -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 <adg@crans.org>
|
||||
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()
|
Loading…
Add table
Add a link
Reference in a new issue