Commit 5a885ad9d6523922eaa8ec1d48c436a56e2f72c8
1 parent
b6643fc8
Exists in
master
and in
1 other branch
- added script to insert/update users
Showing
2 changed files
with
56 additions
and
1 deletions
Show diff stats
BUGS.md
1 | 1 | |
2 | 2 | BUGS: |
3 | 3 | |
4 | -- permitir adicionar users. página de admin. se pw vazia, gera pw por defeito. | |
4 | +- cada topico tem uma pagina begin e uma end | |
5 | +- pertuntas tipo tristate: (sim, não, não sei) | |
6 | +- script para adicionar users/reset passwords. | |
5 | 7 | - animação no final de cada topico para se perceber a transição |
6 | 8 | - aumentar espaço a seguir às tabelas no texto |
7 | 9 | - guardar state cada vez que topico termina | ... | ... |
... | ... | @@ -0,0 +1,53 @@ |
1 | +#!/usr/bin/env python3 | |
2 | + | |
3 | +import csv | |
4 | +import argparse | |
5 | +import re | |
6 | +import string | |
7 | +from sys import exit | |
8 | + | |
9 | +import bcrypt | |
10 | +from sqlalchemy import create_engine | |
11 | +from sqlalchemy.orm import sessionmaker | |
12 | + | |
13 | +from models import Base, Student | |
14 | + | |
15 | +# =========================================================================== | |
16 | +# Parse command line options | |
17 | +# =========================================================================== | |
18 | +argparser = argparse.ArgumentParser(description='Add new student to database or update its password') | |
19 | +argparser.add_argument('--db', default='students.db', type=str, help='database filename') | |
20 | +argparser.add_argument('uid', type=str, default='', help='Student ID') | |
21 | +argparser.add_argument('password', type=str, default='', help='Student password') | |
22 | +argparser.add_argument('name', nargs='*', type=str, default='', help='Student name') | |
23 | +args = argparser.parse_args() | |
24 | + | |
25 | +# =======================================================x==================== | |
26 | +engine = create_engine(f'sqlite:///{args.db}', echo=False) | |
27 | +Base.metadata.create_all(engine) # Criate schema if needed | |
28 | +Session = sessionmaker(bind=engine) | |
29 | + | |
30 | +uid = args.uid | |
31 | +password = bcrypt.hashpw(args.password.encode('utf-8'), bcrypt.gensalt()) | |
32 | +name = ' '.join(args.name) | |
33 | + | |
34 | +# --- start db session --- | |
35 | +session = Session() | |
36 | + | |
37 | +u = session.query(Student).get(uid) | |
38 | + | |
39 | +if u is None: | |
40 | + session.add(Student(id=uid, name=name, password=password)) | |
41 | + print(f'New user added to "{args.db}".') | |
42 | + | |
43 | +else: | |
44 | + print('Student already exists.') | |
45 | + if input(' Update password? [y/n] ') in ('y', 'yes', 'Y', 'Yes', 'YES'): | |
46 | + u.password = password | |
47 | + print(' Password updated.') | |
48 | + else: | |
49 | + print(' Nothing done.') | |
50 | + | |
51 | +session.commit() | |
52 | +session.close() | |
53 | +# --- end db session --- | ... | ... |