Select Git revision
user_index.html
-
Jiří Kalvoda authored
Na stránku kola mohou účastníci kliknout už při stavu "připravuje se", protože se takto mohou podívat na podrobnosti o kole. Closes #222
Jiří Kalvoda authoredNa stránku kola mohou účastníci kliknout už při stavu "připravuje se", protože se takto mohou podívat na podrobnosti o kole. Closes #222
add-role 1.93 KiB
#!/usr/bin/env python3
import argparse
import mo.db as db
import mo.util
from mo.util import die, init_standalone
parser = argparse.ArgumentParser(description='Přidělí uživateli roli')
parser.add_argument('--email', type=str, help='e-mailová adresa uživatele')
parser.add_argument('--uid', type=int, help='ID uživatele')
parser.add_argument('--role', type=str, help='název role', required=True)
parser.add_argument('--place', type=str, help='omezení role na místo s daným kódem')
parser.add_argument('--cat', type=str, help='omezení role na danou kategorii')
parser.add_argument('--year', type=int, help='omezení role na daný ročník')
parser.add_argument('--seq', type=int, help='omezení role na dané pořadí kola')
args = parser.parse_args()
init_standalone()
session = db.get_session()
if args.email and args.uid:
parser.error('--email a --uid nesmí být uvedeny současně')
elif args.email:
user = session.query(db.User).filter_by(email=args.email).first()
elif args.uid:
user = session.query(db.User).filter_by(user_id=args.uid).first()
else:
parser.error('Je nutné vybrat uživatele pomocí --email nebo --uid')
if not user:
die("Tento uživatel neexistuje")
if user.is_admin:
die("Tento uživatel je admin, nemá smysl přidělovat mu další práva")
if not user.is_org:
die("Tento uživatel není organizátor")
role = getattr(db.RoleType, args.role, None)
if role is None:
die("Tato role neexistuje")
if args.place:
for_place = db.get_place_by_code(args.place)
if for_place is None:
die("Toto místo neexistuje")
else:
for_place = db.get_root_place()
assert for_place is not None
ur = db.UserRole(
user_id=user.user_id,
place=for_place,
role=role,
category=args.cat,
year=args.year,
seq=args.seq,
)
session.add(ur)
session.flush()
mo.util.log(db.LogType.user_role, ur.user_role_id, {
'action': 'assigned',
'new': db.row2dict(ur),
})
session.commit()