Skip to content
Snippets Groups Projects
Commit 96a2229a authored by Martin Mareš's avatar Martin Mareš
Browse files

Skript na anonymizaci testovací instance

parent f946922d
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python3
import argparse
import random
from unidecode import unidecode
import mo.db as db
import mo.util
from mo.util import die
parser = argparse.ArgumentParser(description='Anonymizuje všechny účastníky')
parser.add_argument('--really', default=False, action='store_true', help='potvrdí, že to opravdu chceme udělat')
parser.add_argument('--seed', type=str, default='seedme', help='random seed')
parser.add_argument('-n', '--dry-run', default=False, action='store_true', help='vyzkouší sloučení nanečisto (necommitne)')
args = parser.parse_args()
mo.util.init_standalone()
if not args.really:
die("Nejsem si jistý, jestli to chci udělat. Řekni mi, že opravdu.")
def load(name):
with open(f'etc/names/{name}') as f:
return [line.strip() for line in f]
first_names = [load('first-f'), load('first-m')]
last_names = [load('last-f'), load('last-m')]
used_names = set()
rng = random.Random(args.seed)
def norm(name):
return unidecode(name).lower()
def gen_name(orig_last):
if orig_last.endswith('á'):
gender = 0
else:
gender = 1
while True:
f = rng.choice(first_names[gender])
l = rng.choice(last_names[gender])
ff, ll = norm(f), norm(l)
stripped = f'{ff} {ll}'
if stripped not in used_names:
used_names.add(stripped)
return f, l, ff, ll
sess = db.get_session()
users = sess.query(db.User).all()
cnt_anoned = 0
cnt_orgs = 0
cnt_already = 0
for u in users:
if u.is_org or u.is_admin:
cnt_orgs += 1
elif u.email.endswith('@test'):
cnt_already += 1
else:
first, last, first_stripped, last_stripped = gen_name(u.last_name)
email = f'{first_stripped}.{last_stripped}@test'
print(f'{u.first_name} {u.last_name} -> {first} {last} <{email}>')
u.first_name = first
u.last_name = last
u.email = email
cnt_anoned += 1
if not args.dry_run:
sess.commit()
else:
sess.rollback()
print(f'Hotovo: {cnt_anoned} anonymizováno, {cnt_already} už bylo, ponecháno {cnt_orgs} organizátorů')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment