[gestion] Gestion plus propre des changements d'annee

Ajout d'une variable periode_transitoire dans config.py qui definit les
periodes ou on accepte ceux qui ont paye l'annee precedente (on ne prend pas du
tout en compte la carte d'etudiant dans ces periodes).
On en profite pour enlever toute notion de caution ...

darcs-hash:20100801103904-ddb99-cad90eb5599173bec23ff3952b3d22f80fd618f2.gz
This commit is contained in:
Michel Blockelet 2010-08-01 12:39:04 +02:00
parent 5feb3042ee
commit 26dfe36d93
4 changed files with 42 additions and 38 deletions

View file

@ -10,22 +10,38 @@ from time import localtime
# Fichier généré
from config_srv import adm_only, role
# Administratif
caution = 0
#Précablage possible ?
precab = False
##### Gestion des câblages
# Selon la date, on met :
# -ann_scol : Année scolaire en cours
# -periode_transitoire : on accepte ceux qui ont payé l'année dernière
# Année scolaire en cours
# Ne modifier que les dates !
dat = localtime()
if dat[1]<9 : ann_scol = dat[0]-1
else : ann_scol = dat[0]
if dat[1] < 8 or (dat[1] == 8 and dat[2] < 23):
# Si pas encore fin août, on est dans l'année précédente
ann_scol = dat[0]-1
periode_transitoire = False
# sinon on change d'année
elif dat[1] < 10:
# Si pas encore octobre, les gens ayant payé l'année précédente sont
# acceptés
ann_scol = dat[0]
periode_transitoire = True
else:
# Seulement ceux qui ont payé cette année sont acceptés
ann_scol = dat[0]
periode_transitoire = False
# Bloquage si carte d'étudiants manquante pour l'année en cours
# Au niveau du Squid
## Bloquage si carte d'étudiants manquante pour l'année en cours
# /!\ Par sécurité, ces valeurs sont considérées comme False si
# periode_transitoire est True
# Soft (au niveau du Squid)
bl_carte_et_actif = True
# L'adhérent est considéré comme paiement pas ok
# Hard (l'adhérent est considéré comme paiement pas ok)
bl_carte_et_definitif = False
# Gel des cableurs pas a jour de cotisation
# Les droits ne sont pas retires mais il n'y a plus de sudo
bl_vieux_cableurs = False

View file

@ -9,7 +9,7 @@ from affich_tools import *
from gen_confs import gen_config
from ldap_crans import crans_ldap, ann_scol
from time import localtime
from config import bl_carte_et_actif
from config import bl_carte_et_actif, periode_transitoire
class squid(gen_config) :
db = crans_ldap()
@ -82,8 +82,8 @@ class squid_check(gen_config):
m = s[0]
p = m.proprietaire()
to_regen.extend(m.blacklist_actif())
from config import bl_carte_et_actif
if (bl_carte_et_actif and ann_scol not in p.carteEtudiant()):
if (bl_carte_et_actif and not periode_transitoire and ann_scol
not in p.carteEtudiant()):
to_regen.append('carte')
if p.chbre() == '????':
to_regen.append('chbre')
@ -163,7 +163,7 @@ class squid_bloq(squid) :
class squid_carte(squid) :
""" Génère le fichier blacklist-carte pour squid """
actif = bl_carte_et_actif
actif = bl_carte_et_actif and not periode_transitoire
if not actif : restart_cmd = ''
FICHIER = "/etc/squid3/blacklist_carte_et"
chaine = "carteEtudiant!=%i"%ann_scol

View file

@ -1080,8 +1080,7 @@ def set_type_de_connexion(adherent):
def set_admin(proprio):
u"""
Définition de l'état administratif : carte d'étudiant, paiement
et caution.
Définition de l'état administratif : carte d'étudiant et paiement.
"""
# Le proprietaire a-t-il une section carte d'étudiant (pas les clubs) ?
has_card = proprio.idn != 'cid'
@ -1089,8 +1088,6 @@ def set_admin(proprio):
# Initialisation des différentes checkbox
carte = on_off(ann_scol in proprio.carteEtudiant())
paiement = on_off(ann_scol in proprio.paiement())
precab = on_off(ann_scol + 1 in proprio.paiement())
caution = on_off('k' in proprio.controle())
paiement_ok = on_off('p' in proprio.controle())
carte_ok = on_off('c' in proprio.controle())
if has_card: charte_MA = on_off(proprio.charteMA())
@ -1115,15 +1112,10 @@ def set_admin(proprio):
else:
texte.append(u'Adhérent non payant')
# TODO: controle pour le précâblage
if config.precab:
checklist.append(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:
if has_card:
checklist.append(u'"4" "Carte d\'étudiant vérifiée" "%s"' % carte_ok)
checklist.append(u'"5" "Cotisation/charte/caution vérifées" "%s"' % paiement_ok)
checklist.append(u'"5" "Cotisation/charte vérifées" "%s"' % paiement_ok)
if (isbureau or isadm) and has_card:
checklist.append(u'"6" "Charte des MA signee" "%s"' % charte_MA)
@ -2128,13 +2120,8 @@ def menu_principal():
if choix == 'aMc':
# Ajout d'une machine à l'adhérent/au club courant
# 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)
machines_fixes = proprio.machines_fixes()
if not isinstance(proprio, Club) and not proprio.adherentPayant():

View file

@ -670,14 +670,15 @@ class CransLdap:
# considéré non ok s'il n'a pas fourni sa carte d'etudiant
# alors que l'on est desormais en periode de bloquage
# définifif (cf config.py).
if time.localtime()[1] in (8, 9):
# Pour septembre paiement année précédente ok
if config.periode_transitoire:
# Pour la période transitoire année précédente ok
el = "(|(paiement=%d)(paiement=%d))" % (ann_scol, ann_scol-1)
else:
el = "(paiement=%s)" % ann_scol
# Doit-on bloquer en cas de manque de la carte d'etudiant ?
if config.bl_carte_et_definitif:
el = "(&(|(carteEtudiant=%d)(objectClass=club))%s)" % (ann_scol, el)
# Doit-on bloquer en cas de manque de la carte d'etudiant ?
# (si période transitoire on ne bloque dans aucun cas)
if config.bl_carte_et_definitif:
el = "(&(|(carteEtudiant=%d)(objectClass=club))%s)" % (ann_scol, el)
elif champ[1:] == 'blacklist':
el = '(blacklist=%s)' % expr
else:
@ -1549,9 +1550,9 @@ class BaseProprietaire(BaseClasseCrans):
def controle(self, new=None):
u"""
Controle du tresorier
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.
New est de la forme [+-][pc]
(p pour le paiement, c pour la carte)
Retourne une chaine contenant une combinaison de p, c.
"""
actuel = self._data.get('controle', [''])
if not actuel:
@ -1565,7 +1566,7 @@ class BaseProprietaire(BaseClasseCrans):
if not re.match(r'^[+-][pck]$', new):
raise ValueError('modification de controle incorrecte')
for c in 'pck':
for c in 'pc':
if new == '+%s' % c and c not in actuel:
actuel += c
if new == '-%s' % c: