Pylint était tout triste.
This commit is contained in:
parent
3f1b7401ca
commit
33eac6ffac
1 changed files with 84 additions and 63 deletions
|
@ -20,75 +20,95 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
|
||||
"""
|
||||
Ce script permet de se faire mousser en listant les câbleurs et leurs
|
||||
stats.
|
||||
"""
|
||||
|
||||
import sys
|
||||
import re
|
||||
import datetime
|
||||
import string
|
||||
import argparse
|
||||
|
||||
from lc_ldap import shortcuts
|
||||
import lc_ldap.shortcuts as shortcuts
|
||||
import lc_ldap.crans_utils as crans_utils
|
||||
import gestion.config as config
|
||||
import gestion.affichage as affichage
|
||||
|
||||
from cranslib.decorators import static_var
|
||||
from config import ann_scol
|
||||
|
||||
### Appels à LDAP et tri initial sur l'année en cours
|
||||
db = shortcuts.lc_ldap_readonly()
|
||||
adherents = db.search(u'(&(debutAdhesion>=%s)(aid=*))' % (crans_utils.to_generalized_time_format(config.debut_periode_transitoire)), sizelimit=2000)
|
||||
cableurs = db.search(u'(|(droits=cableur)(droits=nounou))')
|
||||
scores = []
|
||||
historique = []
|
||||
encoding = sys.stdout.encoding or "UTF-8"
|
||||
|
||||
### Appels à LDAP et tri initial sur l'année en cours.
|
||||
DB = shortcuts.lc_ldap_readonly()
|
||||
SCORES = []
|
||||
HISTORIQUE = []
|
||||
ENCODING = sys.stdout.encoding or "UTF-8"
|
||||
|
||||
@static_var(("data", []))
|
||||
def adherents(regen=False):
|
||||
"""Fonction évaluée paresseusement pour retourner la liste des
|
||||
adhérents"""
|
||||
|
||||
if regen or not adherents.data:
|
||||
adherents.data = DB.search(u'(&(debutAdhesion>=%s)(aid=*))' % (crans_utils.to_generalized_time_format(config.debut_periode_transitoire)), sizelimit=2000)
|
||||
return list(adherents.data)
|
||||
|
||||
@static_var(("data", []))
|
||||
def cableurs(regen=False):
|
||||
"""Fonction évaluée paresseusement pour retourner la liste des
|
||||
câbleurs"""
|
||||
|
||||
if regen or not cableurs.data:
|
||||
cableurs.data = DB.search(u'(|(droits=cableur)(droits=nounou))')
|
||||
return list(cableurs.data)
|
||||
|
||||
#### On prends les historiques de tout les adhérents
|
||||
def parse_historique(ligne):
|
||||
"""Parse une ligne d'historique et renvoie [ligne parsée],action
|
||||
du cableur, date de l'action"""
|
||||
champ = ligne.value.replace(',','').replace(':','').split(' ',3)
|
||||
champ = ligne.value.replace(',', '').replace(':', '').split(' ', 3)
|
||||
sdate = champ[0].split('/')
|
||||
date = datetime.date(int(sdate[2]),int(sdate[1]),int(sdate[0]))
|
||||
champ_action=champ[3]
|
||||
return champ,champ_action,date
|
||||
date = datetime.date(int(sdate[2]), int(sdate[1]), int(sdate[0]))
|
||||
champ_action = champ[3]
|
||||
return (champ, champ_action, date)
|
||||
|
||||
def actions_cableurs():
|
||||
"""Renvoie l'historique de tous les adherents et tri en fonction
|
||||
des actions éffectuées."""
|
||||
for adherent in adherents:
|
||||
histo=adherent.get('historique',None)
|
||||
for j in range (0,len(histo)):
|
||||
champ=parse_historique(histo[j])[0]
|
||||
champ_action=parse_historique(histo[j])[1]
|
||||
date=parse_historique(histo[j])[2]
|
||||
if ((u' inscription' in champ_action or u'Adhesion+' in champ_action) and date > datetime.date(ann_scol,8,1)):
|
||||
historique.append(champ)
|
||||
return historique
|
||||
for adherent in adherents():
|
||||
histo = adherent.get('historique', None)
|
||||
for j in range (0, len(histo)):
|
||||
champ = parse_historique(histo[j])[0]
|
||||
champ_action = parse_historique(histo[j])[1]
|
||||
date = parse_historique(histo[j])[2]
|
||||
if ((u' inscription' in champ_action or u'Adhesion+' in champ_action) and date > datetime.date(ann_scol, 8, 1)):
|
||||
HISTORIQUE.append(champ)
|
||||
return HISTORIQUE
|
||||
|
||||
#### On parse l'historique et on trie
|
||||
def score_cableurs():
|
||||
"""Calcul le score de tout les câbleurs en fonction des actions
|
||||
effectuées """
|
||||
for cableur in cableurs:
|
||||
inscriptions = reinscriptions=0
|
||||
nom = cableur.get(u'nom',None)[0].value
|
||||
prenom = cableur.get(u'prenom',None)[0].value
|
||||
uid = cableur.get(u'uid',None)[0].value
|
||||
for l in range (0,len(historique)):
|
||||
histo_uid = historique[l][2]
|
||||
histo_action = historique[l][3]
|
||||
for cableur in cableurs():
|
||||
inscriptions = reinscriptions = 0
|
||||
nom = cableur.get(u'nom', None)[0].value
|
||||
prenom = cableur.get(u'prenom', None)[0].value
|
||||
uid = cableur.get(u'uid', None)[0].value
|
||||
for index in range (0, len(HISTORIQUE)):
|
||||
histo_uid = HISTORIQUE[index][2]
|
||||
histo_action = HISTORIQUE[index][3]
|
||||
if histo_uid == uid and histo_action == u' inscription':
|
||||
inscriptions = inscriptions+1
|
||||
inscriptions = inscriptions + 1
|
||||
if histo_uid == uid and (u"debutAdhesion+" in histo_action):
|
||||
reinscriptions = reinscriptions+1
|
||||
reinscriptions = reinscriptions + 1
|
||||
score = 2*inscriptions + reinscriptions
|
||||
scores.append(["%s %s" % (prenom, nom), score, inscriptions, reinscriptions])
|
||||
return scores
|
||||
|
||||
SCORES.append(["%s %s" % (prenom, nom), score, inscriptions, reinscriptions])
|
||||
return SCORES
|
||||
|
||||
### Tri par score
|
||||
def sort_by_score():
|
||||
"""Tri la liste des câbleurs par ordre de score décroissant de score"""
|
||||
return score_cableurs().sort(key=lambda x:int(x[1]),reverse=True)
|
||||
return score_cableurs().sort(key=lambda x:int(x[1]), reverse=True)
|
||||
|
||||
def sort_by_inverse_score():
|
||||
"""Tri la liste des câbleurs par ordre de score croissant de score"""
|
||||
|
@ -96,11 +116,11 @@ def sort_by_inverse_score():
|
|||
|
||||
def cableurs_utiles():
|
||||
"""Renvoi le nombre de cableurs ayant un score non nul"""
|
||||
useless_cableurs=0
|
||||
for k in range(0,len(cableurs)):
|
||||
if (scores[k][1] == 0):
|
||||
useless_cableurs = useless_cableurs+1
|
||||
return len(cableurs) - useless_cableurs
|
||||
useless_cableurs = 0
|
||||
for k in range(0, len(cableurs())):
|
||||
if (SCORES[k][1] == 0):
|
||||
useless_cableurs = useless_cableurs + 1
|
||||
return len(cableurs()) - useless_cableurs
|
||||
|
||||
|
||||
#### Affichage ou x est le nombre de câbleurs à afficher
|
||||
|
@ -109,38 +129,39 @@ def show_all(limit, swap):
|
|||
titre = [u"Câbleur", u"Score", u"Inscriptions", u"Réinscriptions"]
|
||||
largeur = [25, 8, 16, 16]
|
||||
alignement = ["c", "c", "c", "c"]
|
||||
data = [[elem for elem in scores[index]] for index in xrange(limit)]
|
||||
print affichage.tableau(data, titre=titre, largeur=largeur, alignement=alignement, swap=swap).encode(encoding)
|
||||
data = [[elem for elem in SCORES[index]] for index in xrange(limit)]
|
||||
print affichage.tableau(data, titre=titre, largeur=largeur, alignement=alignement, swap=swap).encode(ENCODING)
|
||||
|
||||
#### On définit le Parser
|
||||
if __name__ == "__main__":
|
||||
actions_cableurs()
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("-a", "--all", help="Affiche les scores de tout les câbleurs", action="store_true")
|
||||
parser.add_argument("-t", "--top", help="Affiche seulement les meilleurs câbleurs", action="store_true")
|
||||
parser.add_argument("-s", "--scores", help="Affiche seulement les câbleurs ayant un score non nul", action="store_true")
|
||||
parser.add_argument("-m", "--menage", help="Affiche seulement les câbleurs ayant un score nul", action="store_true")
|
||||
parser.add_argument("-n", "--nocolour", help="Désactive la couleur", action="store_true")
|
||||
args = parser.parse_args()
|
||||
PARSER = argparse.ArgumentParser()
|
||||
PARSER.add_argument("-a", "--all", help="Affiche les scores de tout les câbleurs", action="store_true")
|
||||
PARSER.add_argument("-t", "--top", help="Affiche seulement les meilleurs câbleurs", action="store_true")
|
||||
PARSER.add_argument("-s", "--scores", help="Affiche seulement les câbleurs ayant un score non nul", action="store_true")
|
||||
PARSER.add_argument("-m", "--menage", help="Affiche seulement les câbleurs ayant un score nul", action="store_true")
|
||||
PARSER.add_argument("-n", "--nocolour", help="Désactive la couleur", action="store_true")
|
||||
ARGS = PARSER.parse_args()
|
||||
|
||||
if args.nocolour:
|
||||
swap = []
|
||||
|
||||
if ARGS.nocolour:
|
||||
SWAP = []
|
||||
else:
|
||||
swap = [None, "vert"]
|
||||
SWAP = [None, "vert"]
|
||||
|
||||
if args.all:
|
||||
if ARGS.all:
|
||||
sort_by_score()
|
||||
show_all(len(cableurs), swap=swap)
|
||||
elif args.scores:
|
||||
show_all(len(cableurs()), swap=SWAP)
|
||||
elif ARGS.scores:
|
||||
sort_by_score()
|
||||
show_all(cableurs_utiles(), swap=swap)
|
||||
elif args.menage:
|
||||
show_all(cableurs_utiles(), swap=SWAP)
|
||||
elif ARGS.menage:
|
||||
sort_by_inverse_score()
|
||||
show_all(len(cableurs)-cableurs_utiles(), swap=swap)
|
||||
elif args.top:
|
||||
show_all(len(cableurs()) - cableurs_utiles(), swap=SWAP)
|
||||
elif ARGS.top:
|
||||
sort_by_score()
|
||||
show_all(5, swap=swap)
|
||||
show_all(5, swap=SWAP)
|
||||
else:
|
||||
sort_by_score()
|
||||
show_all(10, swap=swap)
|
||||
show_all(10, swap=SWAP)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue