Liste aussi les contrôles.

This commit is contained in:
Pierre-Elliott Bécue 2015-09-08 02:13:43 +02:00
parent 4ee1ea55d1
commit fe9f69d19a

View file

@ -53,13 +53,23 @@ def adherents(regen=False):
adherents.data = DB.search(u'(&(debutAdhesion>=%s)(aid=*))' % (crans_utils.to_generalized_time_format(config.debut_periode_transitoire)), sizelimit=2000) adherents.data = DB.search(u'(&(debutAdhesion>=%s)(aid=*))' % (crans_utils.to_generalized_time_format(config.debut_periode_transitoire)), sizelimit=2000)
return list(adherents.data) return list(adherents.data)
@static_var(("data", []))
def factures(regen=False):
"""Fonction évaluée paresseusement pour retourner la liste des câbleurs"""
if regen or not factures.data:
factures.data = DB.search(u'(&(|(debutAdhesion>=%(now)s)(debutConnexion>=%(now)s))(fid=*))' % {
'now': crans_utils.to_generalized_time_format(config.debut_periode_transitoire),
}, sizelimit=4000)
return list(factures.data)
@static_var(("data", [])) @static_var(("data", []))
def cableurs(regen=False): def cableurs(regen=False):
"""Fonction évaluée paresseusement pour retourner la liste des """Fonction évaluée paresseusement pour retourner la liste des
câbleurs""" câbleurs"""
if regen or not cableurs.data: if regen or not cableurs.data:
cableurs.data = DB.search(u'(|(droits=cableur)(droits=nounou))') cableurs.data = DB.search(u'(|(droits=cableur)(droits=nounou)(droits=bureau))')
return list(cableurs.data) return list(cableurs.data)
#### On prends les historiques de tout les adhérents #### On prends les historiques de tout les adhérents
@ -76,12 +86,21 @@ def actions_cableurs():
"""Renvoie l'historique de tous les adherents et tri en fonction """Renvoie l'historique de tous les adherents et tri en fonction
des actions éffectuées.""" des actions éffectuées."""
for adherent in adherents(): for adherent in adherents():
histo = adherent.get('historique', None) histo = adherent.get('historique', [])
for j in range (0, len(histo)): for histo_line in histo:
champ = parse_historique(histo[j])[0] champ = parse_historique(histo_line)[0]
champ_action = parse_historique(histo[j])[1] champ_action = parse_historique(histo_line)[1]
date = parse_historique(histo[j])[2] date = parse_historique(histo_line)[2]
if ((u' inscription' in champ_action or u'Adhesion+' in champ_action) and date > datetime.date(ann_scol, 8, 1)): if (u' inscription' in champ_action or u'Adhesion+' in champ_action) and date > datetime.date(ann_scol, 8, 1):
HISTORIQUE.append(champ)
for facture in factures():
histo = facture.get('historique', [])
for histo_line in histo:
champ = parse_historique(histo_line)[0]
champ_action = parse_historique(histo_line)[1]
date = parse_historique(histo_line)[2]
if u'controle' in champ_action and date > datetime.date(ann_scol, 8, 1):
HISTORIQUE.append(champ) HISTORIQUE.append(champ)
return HISTORIQUE return HISTORIQUE
@ -90,7 +109,7 @@ def score_cableurs():
"""Calcul le score de tout les câbleurs en fonction des actions """Calcul le score de tout les câbleurs en fonction des actions
effectuées """ effectuées """
for cableur in cableurs(): for cableur in cableurs():
inscriptions = reinscriptions = 0 inscriptions = reinscriptions = controles = 0
nom = cableur.get(u'nom', None)[0].value nom = cableur.get(u'nom', None)[0].value
prenom = cableur.get(u'prenom', None)[0].value prenom = cableur.get(u'prenom', None)[0].value
uid = cableur.get(u'uid', None)[0].value uid = cableur.get(u'uid', None)[0].value
@ -98,11 +117,13 @@ def score_cableurs():
histo_uid = HISTORIQUE[index][2] histo_uid = HISTORIQUE[index][2]
histo_action = HISTORIQUE[index][3] histo_action = HISTORIQUE[index][3]
if histo_uid == uid and histo_action == u' inscription': if histo_uid == uid and histo_action == u' inscription':
inscriptions = inscriptions + 1 inscriptions += 1
if histo_uid == uid and (u"debutAdhesion+" in histo_action): if histo_uid == uid and (u"debutAdhesion+" in histo_action):
reinscriptions = reinscriptions + 1 reinscriptions += 1
score = 2*inscriptions + reinscriptions if histo_uid == uid and (u"controle" in histo_action):
SCORES.append(["%s %s" % (prenom, nom), score, inscriptions, reinscriptions]) controles += 1
score = 2*inscriptions + reinscriptions + controles
SCORES.append(["%s %s" % (prenom, nom), score, inscriptions, reinscriptions, controles])
return SCORES return SCORES
### Tri par score ### Tri par score
@ -126,16 +147,14 @@ def cableurs_utiles():
#### Affichage ou x est le nombre de câbleurs à afficher #### Affichage ou x est le nombre de câbleurs à afficher
def show_all(limit, swap): def show_all(limit, swap):
"""Tableau fait main pour un effet plus visuel""" """Tableau fait main pour un effet plus visuel"""
titre = [u"Câbleur", u"Score", u"Inscriptions", u"Réinscriptions"] titre = [u"Câbleur", u"Score", u"Inscriptions", u"Réinscriptions", u"Contrôles"]
largeur = [25, 8, 16, 16] largeur = [25, 8, 16, 16, 16]
alignement = ["c", "c", "c", "c"] alignement = ["c", "c", "c", "c", "c"]
data = [[elem for elem in SCORES[index]] for index in xrange(limit)] data = [[elem for elem in SCORES[index]] for index in xrange(limit)]
total = ['Total',0,0,0] total = [0]*4
for elem in SCORES: for elem in SCORES:
total[1]+=elem[1] total = [total[i] + elem[i+1] for i in xrange(len(total))]
total[2]+=elem[2] total = [["Total"] + total]
total[3]+=elem[3]
total = [total]
print affichage.tableau(data, titre=titre, largeur=largeur, alignement=alignement, swap=swap).encode(ENCODING) print affichage.tableau(data, titre=titre, largeur=largeur, alignement=alignement, swap=swap).encode(ENCODING)
print affichage.tableau(total, titre=titre, largeur=largeur, alignement=alignement, swap=swap).encode(ENCODING) print affichage.tableau(total, titre=titre, largeur=largeur, alignement=alignement, swap=swap).encode(ENCODING)