From 6f8ce4e6a8ee1afdb6af2efd87b28af3edecc8b4 Mon Sep 17 00:00:00 2001 From: viennet Date: Wed, 14 Oct 2020 10:07:35 +0200 Subject: [PATCH] randomize nips --- tests/demo/demo_reset_noms.py | 77 ++++++++++++++++++++++++----------- 1 file changed, 54 insertions(+), 23 deletions(-) diff --git a/tests/demo/demo_reset_noms.py b/tests/demo/demo_reset_noms.py index ef5b589a1..26ee2a6c1 100755 --- a/tests/demo/demo_reset_noms.py +++ b/tests/demo/demo_reset_noms.py @@ -3,56 +3,87 @@ """Outils pour environnements de démo. -Change aléatoirement les identites (nom, prenom) d'un ensemble d'étudiants. +Change aléatoirement les identites (nip, sexe, nom, prenom) des étudiants d'un semestre. + +Le NIP est choisi alétoirement (nombre entier à 8 chiffres). +Les noms et prénoms sont issus des fichiers noms.txt, prenoms-h.txt, prenoms-f.txt +(ce sont simlement les plus fréquemment rencontrés en France). +Le sexe est choisi aléatoirement 50-50. """ import sys import random import psycopg2 -DBCNXSTRING='dbname=SCODEMO' + +def usage(): + print(f"Usage: {sys.argv[0]} dbname formsemestre_id") + sys.exit(1) + + +if len(sys.argv) != 3: + usage() + +dbname = sys.argv[1] +formsemestre_id = sys.argv[2] +DBCNXSTRING = f"dbname={dbname}" # Noms et prénoms les plus fréquents en France: -NOMS = [ x.strip() for x in open('noms.txt').readlines() ] -PRENOMS_H = [ x.strip() for x in open('prenoms-h.txt').readlines() ] -PRENOMS_F = [ x.strip() for x in open('prenoms-f.txt').readlines() ] +NOMS = [x.strip() for x in open("noms.txt").readlines()] +PRENOMS_H = [x.strip() for x in open("prenoms-h.txt").readlines()] +PRENOMS_F = [x.strip() for x in open("prenoms-f.txt").readlines()] + def nomprenom(sexe): """un nom et un prenom au hasard""" - if 'e' in sexe.lower(): + if "e" in sexe.lower(): prenom = random.choice(PRENOMS_F) else: prenom = random.choice(PRENOMS_H) return random.choice(NOMS), prenom -def usage(): - print(f'Usage: {sys.argv[0]} formsemestre_id') - sys.exit(1) - -if len(sys.argv) != 2: - usage() -formsemestre_id = sys.argv[1] # Liste des etudiants inscrits à ce semestre -cnx = psycopg2.connect( DBCNXSTRING ) +cnx = psycopg2.connect(DBCNXSTRING) cursor = cnx.cursor() -cursor.execute( """select i.etudid + +cursor.execute( + "select count(*) from notes_formsemestre where formsemestre_id=%(formsemestre_id)s", + {"formsemestre_id": formsemestre_id}, +) +nsem = cursor.fetchone()[0] +if nsem != 1: + print(f"{nsem} formsemestre matching {formsemestre_id} in {dbname}") + sys.exit(2) + +cursor.execute( + """select i.etudid from identite i, notes_formsemestre_inscription ins where i.etudid=ins.etudid and ins.formsemestre_id=%(formsemestre_id)s - """, - { 'formsemestre_id' : formsemestre_id}) + """, + {"formsemestre_id": formsemestre_id}, +) wcursor = cnx.cursor() +n = 0 for (etudid,) in cursor: - sexe = random.choice( ('M.', 'MME') ) + sexe = random.choice(("M.", "MME")) nom, prenom = nomprenom(sexe) - print(f'{etudid}: {nom}\t{prenom}') - args = { 'nom' : nom, 'prenom' : prenom, 'sexe' : sexe, 'etudid' : etudid } + print(f"{etudid}: {nom}\t{prenom}") + args = { + "nom": nom, + "prenom": prenom, + "sexe": sexe, + "etudid": etudid, + "code_nip": random.randrange(10000000, 99999999), + } req = "update identite set nom=%(nom)s, prenom=%(prenom)s, sexe=%(sexe)s where etudid=%(etudid)s" - #print( req % args) - wcursor.execute( req, args ) - + # print( req % args) + wcursor.execute(req, args) + n += 1 + cnx.commit() cnx.close() +print(f"changed {n} identities", file=sys.stderr)