]>
gitweb.pimeys.fr Git - scripts-20-100.git/blob - who_haz_photos.py
d715cecb5a0d4c37bfb0e00485b8f1b6f4121fcf
2 #-*- encoding: utf-8 -*-
4 """ Pour déterminer combien d'adhérents ont une photo dans chaque promo. """
10 #: Chemin où est rangé le code de la Note Kfet
11 NOTE_ROOT_DIR
= "/home/note/note-kfet-2015-serveur/"
13 sys
.path
.append("%sserveur/" % NOTE_ROOT_DIR
)
14 # BaseFonctions importe la conf, donc on a besoin de l'avoir dans le path
15 sys
.path
.append("%sconfig/" % NOTE_ROOT_DIR
)
18 #: requête SQL pour récupérer les premières années d'adhésion de tout le monde
19 req_first_years
= """SELECT adhesions.idbde, min(annee) AS year_first_adhesion
20 FROM adhesions INNER JOIN comptes ON comptes.idbde=adhesions.idbde
21 WHERE comptes.type='personne'
22 GROUP BY adhesions.idbde;"""
24 #: requête SQL pour récupérer les id des clubs
25 req_clubs
= "SELECT idbde FROM comptes WHERE type='club';"
28 """Récupère les ids des clubs et des adhérents."""
29 con
, cur
= BaseFonctions
.getcursor()
30 cur
.execute(req_first_years
)
32 cur
.execute(req_clubs
)
33 clubs
= cur
.fetchall()
36 def check_photos(ids
):
37 """Renvoie un dico ``id -> True/False`` en fonction de si le compte ``id``
38 a une photo pour chaque ``id`` dans ``ids``."""
39 d
= {i
: os
.path
.isfile("%sphotos/%s.png" % (NOTE_ROOT_DIR
, i
)) for i
in ids
}
44 adhs
, clubs
= get_ids()
45 adhs
= {a
["idbde"] : a
for a
in adhs
}
47 clubs
= [c
["idbde"] for c
in clubs
]
48 photos_adhs
= check_photos(id_adhs
)
49 photos_clubs
= check_photos(clubs
)
50 d
= collections
.defaultdict(lambda : {"has" : 0, "tot" : 0})
51 for (i
, has_photo
) in photos_adhs
.iteritems():
52 d
[adhs
[i
]["year_first_adhesion"]]["has"] += has_photo
53 d
[adhs
[i
]["year_first_adhesion"]]["tot"] += 1
54 for (i
, has_photo
) in photos_clubs
.iteritems():
55 d
["clubs"]["has"] += has_photo
56 d
["clubs"]["tot"] += 1
59 if __name__
== "__main__":
66 print "%s : %s/%s %s%%" % (k
, v
["has"], v
["tot"], int(float(v
["has"])/v
["tot"] * 100))