Ajout d'un controle paiement et carte d'tudiant pour le trez
Fait par Stphane. darcs-hash:20051030235747-41617-d58682c07214caef5e2d9b94691f8ed6e2370b61.gz
This commit is contained in:
parent
7483b3f862
commit
1a6bbb2604
3 changed files with 85 additions and 19 deletions
|
@ -33,7 +33,9 @@ from ldap_crans import adherent, machine, crans_ldap, crans, club, blacklist_ite
|
||||||
def dialog(arg) :
|
def dialog(arg) :
|
||||||
return affich_tools.dialog(u'Gestion des adhérents et machines du Crans',arg)
|
return affich_tools.dialog(u'Gestion des adhérents et machines du Crans',arg)
|
||||||
|
|
||||||
isimprimeur = u"Imprimeur" in crans_ldap().search("uid=%s" % script_utilisateur)['adherent'][0].droits()
|
droits = crans_ldap().search("uid=%s" % script_utilisateur)['adherent'][0].droits()
|
||||||
|
isimprimeur = u"Imprimeur" in droits
|
||||||
|
iscontroleur = u'Contrôleur' in droits
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
## Fonctions de remplissage ou modification des paramètres d'un adhérent
|
## Fonctions de remplissage ou modification des paramètres d'un adhérent
|
||||||
|
@ -844,17 +846,39 @@ def set_admin(proprio) :
|
||||||
if ann_scol+1 in proprio.paiement() : precab='on'
|
if ann_scol+1 in proprio.paiement() : precab='on'
|
||||||
else : precab='off'
|
else : precab='off'
|
||||||
|
|
||||||
|
txt = []
|
||||||
|
if 'p' in proprio.controle():
|
||||||
|
txt.append(u'Cotisation vérifiée')
|
||||||
|
paid_ok = 'on'
|
||||||
|
else:
|
||||||
|
paid_ok = 'off'
|
||||||
|
|
||||||
|
if 'c' in proprio.controle():
|
||||||
|
txt.append(u'Carte vérifiée')
|
||||||
|
carte_ok = 'on'
|
||||||
|
else:
|
||||||
|
carte_ok = 'off'
|
||||||
|
|
||||||
|
if iscontroleur: txt = []
|
||||||
arg = u'--title "Etat administratif de %s" ' % proprio.Nom()
|
arg = u'--title "Etat administratif de %s" ' % proprio.Nom()
|
||||||
arg+= u'--separate-output '
|
arg+= u'--separate-output '
|
||||||
arg+= u'--checklist "" 0 0 0 '
|
arg+= u'--checklist "%s" 0 0 0 ' % '\n'.join(txt)
|
||||||
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)
|
if carte_ok == 'off' or iscontroleur:
|
||||||
elif card:
|
if card and (proprio.etudes(0) != "ENS" or proprio.etudes(1) != "Pers"):
|
||||||
arg+= u'"1" "Preuve informelle d\'appartenance aux personnels de l\'ENS" "%s" ' % carte
|
arg+= u'"1" "Carte d\'étudiant %d/%d fournie" "%s" ' % (ann_scol,ann_scol+1, carte)
|
||||||
arg+= u'"2" "Adhésion %d/%d réglée et charte signée" "%s" ' % (ann_scol,ann_scol+1,paid_now)
|
elif card:
|
||||||
|
arg+= u'"1" "Preuve informelle d\'appartenance aux personnels de l\'ENS" "%s" ' % 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 :
|
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)
|
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:
|
||||||
|
arg += u'"4" "Vérification de la cotisation effectuée" "%s" ' % paid_ok
|
||||||
|
arg += u'"5" "Vérification de la carte d\'étudiant effectuée" "%s" ' % carte_ok
|
||||||
|
|
||||||
annul , result = dialog(arg)
|
annul , result = dialog(arg)
|
||||||
if annul : return 1
|
if annul : return 1
|
||||||
|
|
||||||
|
@ -883,10 +907,17 @@ def set_admin(proprio) :
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
proprio.paiement(ann_scol)
|
proprio.paiement(ann_scol)
|
||||||
elif '2\n' not in result : proprio.paiement(-ann_scol)
|
elif '2\n' not in result and (paid_ok == 'off' or iscontroleur):
|
||||||
|
proprio.paiement(-ann_scol)
|
||||||
|
|
||||||
if '3\n' in result : proprio.paiement(ann_scol+1)
|
if '3\n' in result : proprio.paiement(ann_scol+1)
|
||||||
else : proprio.paiement(-ann_scol-1)
|
elif paid_ok == 'off' or iscontroleur: proprio.paiement(-ann_scol-1)
|
||||||
|
|
||||||
|
if '4\n' in result: proprio.controle('+p')
|
||||||
|
elif iscontroleur: proprio.controle('-p')
|
||||||
|
|
||||||
|
if '5\n' in result: proprio.controle('+c')
|
||||||
|
elif iscontroleur: proprio.controle('-c')
|
||||||
|
|
||||||
###############################################################
|
###############################################################
|
||||||
## Fonctions de remplissage ou modification des paramètres club
|
## Fonctions de remplissage ou modification des paramètres club
|
||||||
|
|
|
@ -63,7 +63,7 @@ blacklist_items = { u'bloq' : u'Bloquage total de tout services' ,
|
||||||
|
|
||||||
##################################################################################
|
##################################################################################
|
||||||
### Droits possibles
|
### Droits possibles
|
||||||
droits_possibles = [ u'Nounou', u'Apprenti', u'Modérateur', u'Câbleur', u'Déconnecteur', u'WebRadio' , u'Imprimeur', u'MultiMachines']
|
droits_possibles = [ u'Nounou', u'Apprenti', u'Modérateur', u'Câbleur', u'Déconnecteur', u'WebRadio' , u'Imprimeur', u'MultiMachines', u'Contrôleur' ]
|
||||||
|
|
||||||
##################################################################################
|
##################################################################################
|
||||||
### Variables internes diverses
|
### Variables internes diverses
|
||||||
|
@ -222,9 +222,9 @@ class crans_ldap:
|
||||||
'club': [ 'nom', 'chbre' ] }
|
'club': [ 'nom', 'chbre' ] }
|
||||||
|
|
||||||
# Champs de recherche pour la recherche manuelle (en plus de la recherche auto)
|
# Champs de recherche pour la recherche manuelle (en plus de la recherche auto)
|
||||||
non_auto_search_champs = { 'adherent': [ 'etudes', 'paiement', 'carteEtudiant', 'aid' , 'postalAddress', 'historique' ,'blacklist', 'droits', 'uidNumber', 'uid', 'info', 'solde' ], \
|
non_auto_search_champs = { 'adherent': [ 'etudes', 'paiement', 'carteEtudiant', 'aid' , 'postalAddress', 'historique' ,'blacklist', 'droits', 'uidNumber', 'uid', 'info', 'solde' , 'controle' ], \
|
||||||
'machine': [ 'mid' , 'ipsec', 'historique', 'blacklist' , 'puissance', 'canal', 'portTCPin', 'portTCPout', 'portUDPin', 'portUDPout', 'prise' , 'info', 'exempt' ] ,
|
'machine': [ 'mid' , 'ipsec', 'historique', 'blacklist' , 'puissance', 'canal', 'portTCPin', 'portTCPout', 'portUDPin', 'portUDPout', 'prise' , 'info', 'exempt' ] ,
|
||||||
'club': [ 'cid' , 'responsable', 'paiement', 'historique', 'blacklist', 'mailAlias', 'info'] }
|
'club': [ 'cid' , 'responsable', 'paiement', 'historique', 'blacklist', 'mailAlias', 'info', 'controle' ] }
|
||||||
|
|
||||||
# Scope des différentes recherches
|
# Scope des différentes recherches
|
||||||
scope = { 'adherent': 1 , 'machine': 2 , 'club': 1 }
|
scope = { 'adherent': 1 , 'machine': 2 , 'club': 1 }
|
||||||
|
@ -1036,8 +1036,8 @@ class base_classes_crans(crans_ldap):
|
||||||
|
|
||||||
def _set(self,champ,val):
|
def _set(self,champ,val):
|
||||||
""" Met à jour les données de data et modifie modifs si besoin """
|
""" Met à jour les données de data et modifie modifs si besoin """
|
||||||
if not self._data.has_key(champ) \
|
if (not self._data.has_key(champ) and val != []) \
|
||||||
or self._data.has_key(champ) and self._data[champ]!=val:
|
or (self._data.has_key(champ) and self._data[champ]!=val):
|
||||||
self._data[champ]=val
|
self._data[champ]=val
|
||||||
if champ not in self.modifs:
|
if champ not in self.modifs:
|
||||||
self.modifs.append(champ)
|
self.modifs.append(champ)
|
||||||
|
@ -1187,6 +1187,30 @@ class base_proprietaire(base_classes_crans):
|
||||||
self._set('solde',[str(new)])
|
self._set('solde',[str(new)])
|
||||||
return new
|
return new
|
||||||
|
|
||||||
|
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
|
||||||
|
"""
|
||||||
|
actuel = self._data.get('controle',[''])[0]
|
||||||
|
if new==None:
|
||||||
|
return actuel
|
||||||
|
|
||||||
|
if not sre.match(r'^[+-][pc]$', new):
|
||||||
|
raise ValueError('modification de controle incorrecte')
|
||||||
|
|
||||||
|
for c in 'pc':
|
||||||
|
if new == '+%s' % c and c not in actuel:
|
||||||
|
actuel += c
|
||||||
|
if new == '-%s' % c:
|
||||||
|
actuel = actuel.replace(c, '')
|
||||||
|
|
||||||
|
if actuel == '': self._set('controle',[])
|
||||||
|
else: self._set('controle',[actuel])
|
||||||
|
return actuel
|
||||||
|
|
||||||
def paiement(self,action=None):
|
def paiement(self,action=None):
|
||||||
"""
|
"""
|
||||||
Action est un entier représentant une année
|
Action est un entier représentant une année
|
||||||
|
|
|
@ -109,16 +109,21 @@ def adhers_brief(adhers) :
|
||||||
for a in adhers :
|
for a in adhers :
|
||||||
## Etat administratif
|
## Etat administratif
|
||||||
ok = u'\x1b[1;32mo\x1b[1;0m'
|
ok = u'\x1b[1;32mo\x1b[1;0m'
|
||||||
|
ook = u'\x1b[1;32mO\x1b[1;0m'
|
||||||
nok = u'\x1b[1;31mn\x1b[1;0m'
|
nok = u'\x1b[1;31mn\x1b[1;0m'
|
||||||
# Paiement
|
# Paiement
|
||||||
if ann_scol in a.paiement() : paid = ok
|
if ann_scol in a.paiement():
|
||||||
|
if 'p' in a.controle(): paid = ook
|
||||||
|
else: paid = ok
|
||||||
else : paid = nok
|
else : paid = nok
|
||||||
|
|
||||||
# Précablage
|
# Précablage
|
||||||
if ann_scol+1 in a.paiement() : paid = coul(paid,'f_vert')
|
if ann_scol+1 in a.paiement() : paid = coul(paid,'f_vert')
|
||||||
|
|
||||||
# Carte d'étudiant
|
# Carte d'étudiant
|
||||||
if ann_scol in a.carteEtudiant() : carte = ok
|
if ann_scol in a.carteEtudiant():
|
||||||
|
if 'c' in a.controle(): carte = ook
|
||||||
|
else: carte = ok
|
||||||
else : carte = nok
|
else : carte = nok
|
||||||
|
|
||||||
machines = ''
|
machines = ''
|
||||||
|
@ -180,9 +185,12 @@ def clubs_brief(clubs) :
|
||||||
for c in clubs :
|
for c in clubs :
|
||||||
## Etat administratif
|
## Etat administratif
|
||||||
ok = u'\x1b[1;32mo\x1b[1;0m'
|
ok = u'\x1b[1;32mo\x1b[1;0m'
|
||||||
|
ook = u'\x1b[1;32mO\x1b[1;0m'
|
||||||
nok = u'\x1b[1;31mn\x1b[1;0m'
|
nok = u'\x1b[1;31mn\x1b[1;0m'
|
||||||
# Paiement
|
# Paiement
|
||||||
if ann_scol in c.paiement() : paid = ok
|
if ann_scol in c.paiement():
|
||||||
|
if 'p' in c.controle(): paid = ook
|
||||||
|
else: paid = ok
|
||||||
else : paid = nok
|
else : paid = nok
|
||||||
|
|
||||||
# Précablage
|
# Précablage
|
||||||
|
@ -369,6 +377,7 @@ def adher_details(adher) :
|
||||||
for an in adher.paiement() : g += u" %i-%i" % ( an, an+1 )
|
for an in adher.paiement() : g += u" %i-%i" % ( an, an+1 )
|
||||||
if len(g) > 35 : f += '\n\t'
|
if len(g) > 35 : f += '\n\t'
|
||||||
f += g
|
f += g
|
||||||
|
if 'p' in adher.controle(): f += coul(u' (OK)', 'vert')
|
||||||
f += u'\n'
|
f += u'\n'
|
||||||
|
|
||||||
# Cartes d'étudiant fournie
|
# Cartes d'étudiant fournie
|
||||||
|
@ -381,6 +390,7 @@ def adher_details(adher) :
|
||||||
for an in adher.carteEtudiant() : g += u" %i-%i" % ( an, an+1 )
|
for an in adher.carteEtudiant() : g += u" %i-%i" % ( an, an+1 )
|
||||||
if len(g) > 25 : f += '\n\t'
|
if len(g) > 25 : f += '\n\t'
|
||||||
f += g
|
f += g
|
||||||
|
if 'c' in adher.controle(): f += coul(u' (OK)', 'vert')
|
||||||
f += u'\n'
|
f += u'\n'
|
||||||
|
|
||||||
f += _blacklist(adher)
|
f += _blacklist(adher)
|
||||||
|
@ -565,6 +575,7 @@ def club_details(club) :
|
||||||
for an in club.paiement() : g += " %i-%i" % ( an, an+1 )
|
for an in club.paiement() : g += " %i-%i" % ( an, an+1 )
|
||||||
if len(g) > 35 : f += '\n\t'
|
if len(g) > 35 : f += '\n\t'
|
||||||
f += g
|
f += g
|
||||||
|
if 'p' in club.controle(): f += coul(u' (OK)', 'vert')
|
||||||
f += '\n'
|
f += '\n'
|
||||||
|
|
||||||
login = club.compte()
|
login = club.compte()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue