#!/usr/bin/env python # -*- coding: utf-8 -*- """Change un identifiant d'enseignant (pour corriger une erreur, typiquement un doublon) (à lancer en tant qu'utilisateur postgres) Emmanuel Viennet, 2007 - 2014 """ from __future__ import print_function import pdb, os, sys import psycopg2 from six.moves import input if len(sys.argv) != 4: print("Usage: %s database ancien_utilisateur nouvel_utilisateur" % sys.argv[0]) print("Exemple: change_enseignant.py SCOGEII toto tata") sys.exit(1) dbname = sys.argv[1] OLD_ID = sys.argv[2] NEW_ID = sys.argv[3] DBCNXSTRING = "dbname=%s" % dbname # Confirmation ans = input( "Remplacer le l'utilisateur %s par %s dans toute la base du departement %s ?" % (OLD_ID, NEW_ID, dbname) ).strip() if not ans or ans[0].lower() not in "oOyY": print("annulation") sys.exit(-1) cnx = psycopg2.connect(DBCNXSTRING) cursor = cnx.cursor() req = "update %s set %s=%%(new_id)s where %s=%%(old_id)s" args = {"old_id": OLD_ID, "new_id": NEW_ID} tables_attr = { "notes_formsemestre": "responsable_id", "entreprise_contact": "enseignant", "admissions": "rapporteur", "notes_moduleimpl": "responsable_id", "notes_modules_enseignants": "ens_id", "notes_notes": "uid", "notes_notes_log": "uid", "notes_appreciations": "author", } for (table, attr) in tables_attr.items(): cursor.execute(req % (table, attr, attr), args) print("table %s: %s" % (table, cursor.statusmessage)) cnx.commit()