diff --git a/gestion/config.py b/gestion/config.py index 0ffcf9c8..ed70d651 100644 --- a/gestion/config.py +++ b/gestion/config.py @@ -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 diff --git a/gestion/gen_confs/squid.py b/gestion/gen_confs/squid.py index 460d6d1e..2b16e39e 100644 --- a/gestion/gen_confs/squid.py +++ b/gestion/gen_confs/squid.py @@ -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 diff --git a/gestion/gest_crans.py b/gestion/gest_crans.py index f21d50af..52e10518 100644 --- a/gestion/gest_crans.py +++ b/gestion/gest_crans.py @@ -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(): diff --git a/gestion/ldap_crans.py b/gestion/ldap_crans.py index 1e9fa7db..33624a66 100644 --- a/gestion/ldap_crans.py +++ b/gestion/ldap_crans.py @@ -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: