Script préparation démos: renommage de tous les étudiants

This commit is contained in:
Emmanuel Viennet 2024-04-03 19:02:40 +02:00
parent 6dfab2d843
commit 8ec0171ca0

View File

@ -3,7 +3,8 @@
"""Outils pour environnements de démo. """Outils pour environnements de démo.
Change aléatoirement les identites (nip, civilite, nom, prenom) des étudiants d'un semestre. Change aléatoirement les identites (nip, civilite, nom, prenom) des étudiants.
Un semestre ou tous si non spécifié.
Le NIP est choisi aléatoirement (nombre entier à 8 chiffres). Le NIP est choisi aléatoirement (nombre entier à 8 chiffres).
Les noms et prénoms sont issus des fichiers noms.txt, prenoms-h.txt, prenoms-f.txt Les noms et prénoms sont issus des fichiers noms.txt, prenoms-h.txt, prenoms-f.txt
@ -19,37 +20,39 @@ from gen_nomprenoms import nomprenom
def usage(): def usage():
print(f"Usage: {sys.argv[0]} dbname formsemestre_id") print(f"Usage: {sys.argv[0]} dbname [formsemestre_id]")
sys.exit(1) sys.exit(1)
if len(sys.argv) != 3: if len(sys.argv) not in (2, 3):
usage() usage()
dbname = sys.argv[1] dbname = sys.argv[1]
formsemestre_id = sys.argv[2] formsemestre_id = sys.argv[2] if len(sys.argv) > 2 else None
DBCNXSTRING = f"dbname={dbname}" DBCNXSTRING = f"dbname={dbname}"
# Liste des etudiants inscrits à ce semestre # Liste des etudiants inscrits à ce semestre
cnx = psycopg2.connect(DBCNXSTRING) cnx = psycopg2.connect(DBCNXSTRING)
cursor = cnx.cursor() cursor = cnx.cursor()
cursor.execute( if formsemestre_id is None:
cursor.execute("SELECT i.id from identite i")
else:
cursor.execute(
"select count(*) from notes_formsemestre where id=%(formsemestre_id)s", "select count(*) from notes_formsemestre where id=%(formsemestre_id)s",
{"formsemestre_id": formsemestre_id}, {"formsemestre_id": formsemestre_id},
) )
nsem = cursor.fetchone()[0] nsem = cursor.fetchone()[0]
if nsem != 1: if nsem != 1:
print(f"{nsem} formsemestre matching {formsemestre_id} in {dbname}") print(f"{nsem} formsemestre matching {formsemestre_id} in {dbname}")
sys.exit(2) sys.exit(2)
cursor.execute(
cursor.execute(
"""select i.id """select i.id
from identite i, notes_formsemestre_inscription ins from identite i, notes_formsemestre_inscription ins
where i.id=ins.etudid and ins.formsemestre_id=%(formsemestre_id)s where i.id=ins.etudid and ins.formsemestre_id=%(formsemestre_id)s
""", """,
{"formsemestre_id": formsemestre_id}, {"formsemestre_id": formsemestre_id},
) )
wcursor = cnx.cursor() wcursor = cnx.cursor()
n = 0 n = 0