Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import click
import logging
from flask import Flask
from flask.cli import AppGroup
from portal import db
from management import data
from management.data import shared
from portal.service.general import find_user
log = logging.getLogger(__name__)
data_cli = AppGroup('data')
users_cli = AppGroup('users')
flask_app: Flask = None
def register_commands(app: Flask):
global flask_app
app.cli.add_command(data_cli)
app.cli.add_command(users_cli)
flask_app = app
return app
@data_cli.command('init')
def cli_init_data():
log.info("[CMD] Initializing data")
log.debug(f"[CONFIG] DB: {flask_app.config['SQLALCHEMY_DATABASE_URI']}")
data.init_data(db=db, app=flask_app)
@users_cli.command('create')
@click.argument('name')
def cli_users_create(name):
with flask_app.app_context():
log.info(f"[CMD] Create user: {name}")
password = click.prompt('Password', hide_input=True, confirmation_prompt=True)
creator = shared.DataCreator(db)
user = creator.create_user(
username=name,
name=name,
admin=True,
password=password
)
db.session.commit()
log.info(f"[CMD] Created user: {user}")
@users_cli.command('set-password')
@click.argument('name')
def cli_users_create(name):
with flask_app.app_context():
log.info(f"[CMD] Update password for user: {name}")
password = click.prompt('Password', hide_input=True, confirmation_prompt=True)
user = find_user(name)
user.set_password(password=password)
db.session.add(user)
db.session.commit()
log.info(f"[CMD] Updated password for user: {user}")