]> gitweb.pimeys.fr Git - scripts-20-100.git/commitdiff
[bde/stats/who_haz_photos] Scripts pour faire des stats sur le % de photos par promo
authorVincent Le Gallic <legallic@crans.org>
Sat, 4 Apr 2015 23:15:42 +0000 (01:15 +0200)
committerVincent Le Gallic <legallic@crans.org>
Sat, 4 Apr 2015 23:15:42 +0000 (01:15 +0200)
bde/stats/who_haz_photos.py [new file with mode: 0755]

diff --git a/bde/stats/who_haz_photos.py b/bde/stats/who_haz_photos.py
new file mode 100755 (executable)
index 0000000..c2d04de
--- /dev/null
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+#-*- encoding: utf-8 -*-
+
+""" Pour déterminer combien d'adhérents ont une photo dans chaque promo. """
+
+import sys
+import os.path
+import collections
+
+#: Chemin où est rangé le code de la Note Kfet
+NOTE_ROOT_DIR = "/home/note/Note_Kfet_2015_server/"
+
+sys.path.append("%sserveur/" % NOTE_ROOT_DIR)
+# BaseFonctions importe la conf, donc on a besoin de l'avoir dans le path
+sys.path.append("%sconfig/" % NOTE_ROOT_DIR)
+import BaseFonctions
+
+#: requête SQL pour récupérer les premières années d'adhésion de tout le monde
+req_first_years = """SELECT adhesions.idbde, min(annee) AS year_first_adhesion
+                     FROM adhesions INNER JOIN comptes ON comptes.idbde=adhesions.idbde
+                     WHERE comptes.type='personne'
+                     GROUP BY adhesions.idbde;"""
+
+#: requête SQL pour récupérer les id des clubs
+req_clubs = "SELECT idbde FROM comptes WHERE type='club';"
+
+def get_ids():
+    """Récupère les ids des clubs et des adhérents."""
+    con, cur = BaseFonctions.getcursor()
+    cur.execute(req_first_years)
+    adhs = cur.fetchall()
+    cur.execute(req_clubs)
+    clubs = cur.fetchall()
+    return adhs, clubs
+
+def check_photos(ids):
+    """Renvoie un dico ``id -> True/False`` en fonction de si le compte ``id``
+       a une photo pour chaque ``id`` dans ``ids``."""
+    d = {i : os.path.isfile("%sphotos/%s.png" % (NOTE_ROOT_DIR, i)) for i in ids}
+    return d
+
+def compute():
+    """Do the job"""
+    adhs, clubs = get_ids()
+    adhs = {a["idbde"] : a for a in adhs}
+    id_adhs = adhs.keys()
+    clubs = [c["idbde"] for c in clubs]
+    photos_adhs = check_photos(id_adhs)
+    photos_clubs = check_photos(clubs)
+    d = collections.defaultdict(lambda : {"has" : 0, "tot" : 0})
+    for (i, has_photo) in photos_adhs.iteritems():
+        d[adhs[i]["year_first_adhesion"]]["has"] += has_photo
+        d[adhs[i]["year_first_adhesion"]]["tot"] += 1
+    for (i, has_photo) in photos_clubs.iteritems():
+        d["clubs"]["has"] += has_photo
+        d["clubs"]["tot"] += 1
+    return dict(d)
+
+if __name__ == "__main__":
+    import pprint
+    d = compute()
+    keys = d.keys()
+    keys.sort()
+    for k in keys:
+        v = d[k]
+        print "%s : %s/%s %s%%" % (k, v["has"], v["tot"], int(float(v["has"])/v["tot"] * 100))