]>
gitweb.pimeys.fr Git - scripts-20-100.git/blob - bde/integrite/fix_integrity.py
932460000dcc77d036ce91cd8bc687bd3cb08575
4 """ Codé pour rétablir l'intégrité de la BDD.
6 Pour générer des transactions dans le passé
7 pour les gens qui n'avaient pas commencé avec un solde nul.
10 import psycopg2
, psycopg2
.extras
12 con
= psycopg2
.connect(database
="bde", connection_factory
=psycopg2
.extras
.DictConnection
)
15 from commands
import getstatusoutput
as ex
19 req
="""SELECT numcbde,pseudo,gagne-perdu as calcul,effectif,effectif-(gagne-perdu) as a_enlever
21 (SELECT numcbde,pseudo,
22 (SELECT COALESCE(sum(montant*quantite), 0)
24 WHERE destinataire=main.numcbde AND valide='t') as gagne,
25 (SELECT COALESCE(sum(montant*quantite), 0)
27 WHERE emetteur=main.numcbde AND valide='t') as perdu,
29 FROM adherents WHERE numcbde=main.numcbde) as effectif
30 FROM adherents as main)
32 WHERE gagne-perdu!=effectif AND numcbde>0 ORDER BY numcbde;"""
38 f
=open("request_fixing.sql", "w")
39 f
.write("ALTER TABLE transactions DISABLE TRIGGER ALL;\n")
41 to_credit
= bug
["effectif"] - bug
["calcul"]
43 emet
, dest
= 0, bug
["numcbde"]
45 emet
, dest
= bug
["numcbde"], 0
46 f
.write("INSERT INTO transactions (conso, emetteur, destinataire, montant, quantite, remarque) VALUES (1, %s, %s, %s, 1, 'Solde initial');\n" % (emet
, dest
, abs(to_credit
)))
47 # En fait à cause des solde négatifs, il faut DISABLE les triggers, donc on n'a pas besoin d'update après
48 #f.write("UPDATE adherents SET solde=solde - (%s) WHERE numcbde=%s;\n" % (to_credit, bug["numcbde"]))
50 f
.write("ALTER TABLE transactions ENABLE TRIGGER ALL;\n")