rozbicie na moduły, poprawki i komendy cli
This commit is contained in:
79
zbiorka_app/cli.py
Normal file
79
zbiorka_app/cli.py
Normal file
@@ -0,0 +1,79 @@
|
||||
import click
|
||||
from flask.cli import with_appcontext
|
||||
|
||||
from .extensions import db
|
||||
from .utils import (
|
||||
ensure_database_ready,
|
||||
init_database_with_retry,
|
||||
safe_db_rollback,
|
||||
set_login_hosts,
|
||||
set_user_password,
|
||||
)
|
||||
|
||||
|
||||
def register_cli_commands(app):
|
||||
@app.cli.command("init-db")
|
||||
@click.option("--attempts", default=20, type=int, show_default=True)
|
||||
@click.option("--delay", default=3, type=int, show_default=True)
|
||||
def init_db_command(attempts: int, delay: int):
|
||||
"""Inicjalizuje baze i czeka az bedzie gotowa."""
|
||||
ok = init_database_with_retry(app, max_attempts=attempts, delay=delay, raise_on_failure=False)
|
||||
if not ok:
|
||||
raise click.ClickException("Nie udalo sie zainicjalizowac bazy danych.")
|
||||
click.echo("Baza danych gotowa.")
|
||||
|
||||
@app.cli.command("set-admin-password")
|
||||
@click.option("--username", default="admin", show_default=True)
|
||||
@click.option("--password", prompt=True, hide_input=True, confirmation_prompt=True)
|
||||
@with_appcontext
|
||||
def set_admin_password_command(username: str, password: str):
|
||||
"""Ustawia haslo administratora."""
|
||||
try:
|
||||
ensure_database_ready(create_schema=True, create_admin=True)
|
||||
user = set_user_password(username=username, password=password, is_admin=True)
|
||||
click.echo(f"Haslo admina ustawione dla uzytkownika: {user.uzytkownik}")
|
||||
except Exception as exc:
|
||||
safe_db_rollback()
|
||||
raise click.ClickException(str(exc))
|
||||
|
||||
@app.cli.command("set-user-password")
|
||||
@click.argument("username")
|
||||
@click.option("--password", prompt=True, hide_input=True, confirmation_prompt=True)
|
||||
@click.option("--admin/--no-admin", default=None)
|
||||
@with_appcontext
|
||||
def set_user_password_command(username: str, password: str, admin: bool | None):
|
||||
"""Tworzy uzytkownika lub zmienia jego haslo."""
|
||||
try:
|
||||
ensure_database_ready(create_schema=True, create_admin=True)
|
||||
user = set_user_password(username=username, password=password, is_admin=admin)
|
||||
click.echo(f"Haslo ustawione dla uzytkownika: {user.uzytkownik}")
|
||||
except Exception as exc:
|
||||
safe_db_rollback()
|
||||
raise click.ClickException(str(exc))
|
||||
|
||||
@app.cli.command("set-login-hosts")
|
||||
@click.argument("hosts", required=False, default="")
|
||||
@with_appcontext
|
||||
def set_login_hosts_command(hosts: str):
|
||||
"""Ustawia dozwolone hosty lub IP do logowania."""
|
||||
try:
|
||||
ensure_database_ready(create_schema=True, create_admin=True)
|
||||
settings = set_login_hosts(hosts)
|
||||
click.echo(
|
||||
"Dozwolone hosty logowania ustawione na: "
|
||||
f"{settings.dozwolone_hosty_logowania or '(brak - logowanie zablokowane)'}"
|
||||
)
|
||||
except Exception as exc:
|
||||
safe_db_rollback()
|
||||
raise click.ClickException(str(exc))
|
||||
|
||||
@app.cli.command("db-ping")
|
||||
@with_appcontext
|
||||
def db_ping_command():
|
||||
"""Sprawdza polaczenie z baza danych."""
|
||||
try:
|
||||
ensure_database_ready(create_schema=False, create_admin=False)
|
||||
click.echo("OK")
|
||||
except Exception as exc:
|
||||
safe_db_rollback()
|
||||
raise click.ClickException(f"DB ERROR: {exc}")
|
||||
Reference in New Issue
Block a user