--- /dev/null
+#!/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))