Newer
Older
from management import data
from management.data import shared
from portal.service import general
from portal.service.general import find_user
log = logging.getLogger(__name__)
data_cli = AppGroup('data', help='Sample data initialization')
users_cli = AppGroup('users', help='Users management')
devel_cli = AppGroup('devel', help='Development options')
app: Flask = create_app()
app.cli.add_command(data_cli)
app.cli.add_command(users_cli)
app.cli.add_command(devel_cli)
@data_cli.command('init')
def cli_init_data():
log.info("[CMD] Initializing data")
log.debug(f"[CONFIG] DB: {app.config['SQLALCHEMY_DATABASE_URI']}")
data.init_data(db=db, app=app)
@users_cli.command('create')
@click.argument('name')
def cli_users_create(name):
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_set_password(name):
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}")
@users_cli.command('delete')
@click.argument('name')
def cli_users_set_password(name):
with app.app_context():
log.info(f"[CMD] Delete user: {name}")
ask: str = click.prompt('Type Y/y for confirmation', hide_input=True)
if ask.lower()[0] != 'y':
return
user = find_user(name)
general.delete_entity(user)
log.info(f"[CMD] User deleted: {name}")
@click.option('-p', '--port', default=8000)
db.drop_all(app=app)
db.create_all(app=app)
data.init_data(app, db)