rozbicie na moduły, poprawki i komendy cli

This commit is contained in:
Mateusz Gruszczyński
2026-03-20 10:43:40 +01:00
parent c5295fa49c
commit bbfb3e0887
48 changed files with 2125 additions and 1676 deletions

79
zbiorka_app/cli.py Normal file
View 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}")