]> gitweb.pimeys.fr Git - scripts-20-100.git/commitdiff
[combiennegs] Des trucs codés avec les pieds + compatibilité python2.?
authorVincent Le Gallic <legallic@crans.org>
Sun, 28 Sep 2014 13:15:43 +0000 (15:15 +0200)
committerVincent Le Gallic <legallic@crans.org>
Sun, 28 Sep 2014 13:15:43 +0000 (15:15 +0200)
Parce que les dico en compréhension on les a pas sur le serveur note

bde/combiennegs.py

index c6f43fbf51d2e9ab511959571d32b06cd192b624..1e62cd16d4c7720c78a6fdb9b028ef5f220624c9 100755 (executable)
@@ -3,31 +3,28 @@
 
 """ Pour savoir combien de fois les gens sont passés en négatif """
 
-import psyopg2
-import psyopg2.extras
+import psycopg2
+import psycopg2.extras
 
-year = 2014
-
-def get_data(con, year):
-    cur = con.getcursor(cursor_factory = psycopg2.DictCursor)
+def get_data(con):
+    cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
     cur.execute("SELECT * FROM transactions ORDER BY date ASC;")
     transactions = cur.fetchall()
-    cur.execute("SELECT adherent FROM inscriptions WHERE annee = %s;", (year,))
-    numcbdes = cur.fetchall()
-    return (numcbdes, transactions)
+    return transactions
 
-def combienneg(numcbdes, alltrans):
-    soldes = {n : 0 for n in numcbdes}
-    nbnegs = {n : 0 for n in numcbdes}
+def combienneg(alltrans):
+    nums = list(set([t["emetteur"] for t in alltrans] + [t["destinataire"] for t in alltrans]))
+    soldes = dict([(n, 0) for n in nums])
+    negs = dict([(n, []) for n in nums])
     for trans in [t for t in alltrans if t["valide"]]:
-        for (num, signe) in [(t["emetteur"], -1), (t["destinataire"], 1)]:
-            newsolde = soldes[num] + t["montant"] * t["quantite"] * signe
+        for (num, signe) in [(trans["emetteur"], -1), (trans["destinataire"], 1)]:
+            newsolde = soldes[num] + trans["montant"] * trans["quantite"] * signe
             if soldes[num] >= 0 and newsolde < 0:
-                nbnegs[num] += 1
-            soldes[num] += newsolde
-    return nbnegs
+                negs[num].append(t["date"])
+            soldes[num] = newsolde
+    return (negs, soldes)
 
 if __name__ == "__main__":
-    con = psycopg2.connect("bde")
-    numcbdes, transactions = get_data(con, year)
-    nbnegs = combienneg(numcbdes, transactions)
+    con = psycopg2.connect(database="bde")
+    transactions = get_data(con)
+    (negs, soldes) = combienneg(transactions)