From 872f8bd77268afb54fc4c50209160a0c6d449e10 Mon Sep 17 00:00:00 2001 From: pauget Date: Fri, 18 Nov 2005 01:25:56 +0100 Subject: [PATCH] Gestion de la caution par Stphane. darcs-hash:20051118002556-41617-c81d1382bc14ab6f92ff080aaf4155495a7fe42e.gz --- gestion/gest_crans.py | 51 +++++++++++++++++++++++++++++++++++++------ gestion/ldap_crans.py | 10 ++++----- gestion/whos.py | 2 ++ 3 files changed, 51 insertions(+), 12 deletions(-) diff --git a/gestion/gest_crans.py b/gestion/gest_crans.py index 4a8902e6..c582d76b 100755 --- a/gestion/gest_crans.py +++ b/gestion/gest_crans.py @@ -885,8 +885,12 @@ def set_blackliste(clas) : def set_admin(proprio) : """ - Définition de l'état administratif : carte d'étudiant et paiement + Définition de l'état administratif : carte d'étudiant, paiement + et caution. """ + # Le propriétaire est-il un personnel de l'ENS ? + personnel = proprio.etudes(0) == "ENS" and proprio.etudes(1) == "Pers" + # Le proprietaire a t-il une section carte d'étudiant ? # Pas pour les clubs if proprio.idn != 'cid': @@ -911,6 +915,12 @@ def set_admin(proprio) : else: paid_ok = 'off' + if 'k' in proprio.controle(): + txt.append(u'Caution payée') + caution_ok = 'on' + else: + caution_ok = 'off' + if 'c' in proprio.controle(): txt.append(u'Carte vérifiée') carte_ok = 'on' @@ -919,7 +929,7 @@ def set_admin(proprio) : if iscontroleur: txt = [] - if len(txt) == 2 : + if len(txt) == 3 : # Il n'y a rien à demander dialog(u'--title "État administratif de %s non modifiable" --msgbox "%s\n" 0 0 ' % (proprio.Nom(), '\n'.join(txt))) return @@ -929,16 +939,19 @@ def set_admin(proprio) : arg+= u'--checklist "%s" 0 0 0 ' % '\n'.join(txt) if carte_ok == 'off' or iscontroleur: - if card and (proprio.etudes(0) != "ENS" or proprio.etudes(1) != "Pers"): - arg+= u'"1" "Carte d\'étudiant %d/%d fournie" "%s" ' % (ann_scol,ann_scol+1, carte) - elif card: + if personnel: arg+= u'"1" "Preuve informelle d\'appartenance aux personnels de l\'ENS" "%s" ' % carte + elif card: + arg+= u'"1" "Carte d\'étudiant %d/%d fournie" "%s" ' % (ann_scol,ann_scol+1, carte) if paid_ok == 'off' or iscontroleur: arg+= u'"2" "Adhésion %d/%d réglée et charte signée" "%s" ' % (ann_scol,ann_scol+1,paid_now) if config.precab == 1 : arg+= u'"3" "Adhésion %d/%d réglée et charte signée (précâblage)" "%s" ' % (ann_scol+1,ann_scol+2,precab) + if iscontroleur or (caution_ok == 'off' and not personnel): + arg+= u'"C" "Caution payée" "%s" ' % caution_ok + if iscontroleur: if card: arg += u'"4" "Vérification de la carte d\'étudiant effectuée" "%s" ' % carte_ok arg += u'"5" "Vérification de la cotisation/charte effectuée" "%s" ' % paid_ok @@ -949,7 +962,7 @@ def set_admin(proprio) : # Traitement if card : if '1\n' in result : proprio.carteEtudiant(ann_scol) - else : proprio.carteEtudiant(-ann_scol) + elif iscontroleur or carte_ok == 'off' : proprio.carteEtudiant(-ann_scol) if '2\n' in result and ann_scol not in proprio.paiement(): # On est en train de renouveller l'adhésion @@ -984,6 +997,11 @@ def set_admin(proprio) : if '5\n' in result: proprio.controle('+p') elif iscontroleur: proprio.controle('-p') + if 'C\n' in result: + proprio.controle('+k') + elif iscontroleur: + proprio.controle('-k') + ############################################################### ## Fonctions de remplissage ou modification des paramètres club @@ -1805,12 +1823,18 @@ def menu_principal() : if proprio.__class__ == club or proprio.etudes(0) != "ENS" or \ proprio.etudes(1) != "Pers": + # On ne peut avoir de machine fixe si on n'a pas payé + # la caution + caution_ok = 'k' in proprio.controle() + # On ne peut avoir une machine fixe que si on a pas # déjà une machine fixe, sauf si on est membre actif # (expérimental) # On récupère la liste des machines fixes - if proprio.__class__ == club or not proprio.machines_fixes() or proprio.droits(): + if caution_ok and \ + (proprio.__class__ == club or \ + not proprio.machines_fixes() or proprio.droits()): arg = u'--title "Nouvelle machine" ' arg+= u'--menu "Type de machine ?" 0 0 0 ' arg+= u'"Fixe" "Machine fixe" ' @@ -1818,6 +1842,19 @@ def menu_principal() : annul , result = dialog(arg) if annul : continue choix=result[0] + elif not caution_ok: + arg = u'--title "Nouvelle machine" ' + arg+= u'--menu " Caution non payée\n\n' + arg+= u'Pour pouvoir incrire une machine fixe, il faut avoir' + arg+= u'payé la caution." 0 0 0 ' + arg+= u'"OK" "OK, on lui rajoute une machine wifi" ' + arg+= u'"Annul" "Bon, on abandonne..." ' + annul, result = dialog(arg) + if annul or result[0] == "Annul": continue + if result[0] == "OK": + choix = 'Wifi' + else: + continue else: # Plus de machine fixe possible... arg = u'--title "Nouvelle machine" ' diff --git a/gestion/ldap_crans.py b/gestion/ldap_crans.py index 1690cb0a..7001b49e 100755 --- a/gestion/ldap_crans.py +++ b/gestion/ldap_crans.py @@ -1217,9 +1217,9 @@ class base_proprietaire(base_classes_crans): def controle(self,new=None): """ Controle du tresorier - New est de la forme [+-][pc] - (p pour le paiement, c pour la carte - Retourne une chaine contenant p ou c ou les deux + New est de la forme [+-][pck] + (p pour le paiement, c pour la carte, k pour la caution) + Retourne une chaine contenant une combinaison de p, c, k. """ actuel = self._data.get('controle',['']) if not actuel: @@ -1230,10 +1230,10 @@ class base_proprietaire(base_classes_crans): if new==None: return actuel - if not sre.match(r'^[+-][pc]$', new): + if not sre.match(r'^[+-][pck]$', new): raise ValueError('modification de controle incorrecte') - for c in 'pc': + for c in 'pck': if new == '+%s' % c and c not in actuel: actuel += c if new == '-%s' % c: diff --git a/gestion/whos.py b/gestion/whos.py index 20f6b132..8cb9563d 100755 --- a/gestion/whos.py +++ b/gestion/whos.py @@ -314,6 +314,8 @@ def adher_details(adher) : if jour : f += coul(u"à jour",'vert') + if 'k' not in adher.controle(): + f += u' (caution non payée)' f += '\n' # Telephone