forked from ScoDoc/ScoDoc
randomize nips
This commit is contained in:
parent
f1f3112e7b
commit
6f8ce4e6a8
@ -3,56 +3,87 @@
|
|||||||
|
|
||||||
"""Outils pour environnements de démo.
|
"""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 sys
|
||||||
import random
|
import random
|
||||||
import psycopg2
|
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 et prénoms les plus fréquents en France:
|
||||||
NOMS = [ x.strip() for x in open('noms.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_H = [x.strip() for x in open("prenoms-h.txt").readlines()]
|
||||||
PRENOMS_F = [ x.strip() for x in open('prenoms-f.txt').readlines() ]
|
PRENOMS_F = [x.strip() for x in open("prenoms-f.txt").readlines()]
|
||||||
|
|
||||||
|
|
||||||
def nomprenom(sexe):
|
def nomprenom(sexe):
|
||||||
"""un nom et un prenom au hasard"""
|
"""un nom et un prenom au hasard"""
|
||||||
if 'e' in sexe.lower():
|
if "e" in sexe.lower():
|
||||||
prenom = random.choice(PRENOMS_F)
|
prenom = random.choice(PRENOMS_F)
|
||||||
else:
|
else:
|
||||||
prenom = random.choice(PRENOMS_H)
|
prenom = random.choice(PRENOMS_H)
|
||||||
return random.choice(NOMS), prenom
|
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
|
# Liste des etudiants inscrits à ce semestre
|
||||||
cnx = psycopg2.connect( DBCNXSTRING )
|
cnx = psycopg2.connect(DBCNXSTRING)
|
||||||
cursor = cnx.cursor()
|
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
|
from identite i, notes_formsemestre_inscription ins
|
||||||
where i.etudid=ins.etudid and ins.formsemestre_id=%(formsemestre_id)s
|
where i.etudid=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
|
||||||
for (etudid,) in cursor:
|
for (etudid,) in cursor:
|
||||||
sexe = random.choice( ('M.', 'MME') )
|
sexe = random.choice(("M.", "MME"))
|
||||||
nom, prenom = nomprenom(sexe)
|
nom, prenom = nomprenom(sexe)
|
||||||
print(f'{etudid}: {nom}\t{prenom}')
|
print(f"{etudid}: {nom}\t{prenom}")
|
||||||
args = { 'nom' : nom, 'prenom' : prenom, 'sexe' : sexe, 'etudid' : etudid }
|
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"
|
req = "update identite set nom=%(nom)s, prenom=%(prenom)s, sexe=%(sexe)s where etudid=%(etudid)s"
|
||||||
#print( req % args)
|
# print( req % args)
|
||||||
wcursor.execute( req, args )
|
wcursor.execute(req, args)
|
||||||
|
n += 1
|
||||||
|
|
||||||
|
|
||||||
cnx.commit()
|
cnx.commit()
|
||||||
cnx.close()
|
cnx.close()
|
||||||
|
|
||||||
|
print(f"changed {n} identities", file=sys.stderr)
|
||||||
|
Loading…
Reference in New Issue
Block a user