edited230126

This commit is contained in:
2026-01-23 18:07:29 +01:00
parent 32312fe4f2
commit 138136e835
18 changed files with 1354 additions and 283 deletions

View File

@@ -6,10 +6,16 @@ from .models import User
@click.command("init-db")
@click.option("--admin-user", required=True, help="Username for the initial admin")
@click.option(
"--admin-email",
required=False,
default="beheer@alphen.cloud",
show_default=True,
help="Email for the initial admin",
)
@click.option("--admin-pass", required=True, help="Password for the initial admin")
@with_appcontext
def init_db_command(admin_user: str, admin_pass: str):
def init_db_command(admin_email: str, admin_pass: str):
"""Create tables and ensure an admin account exists."""
db.create_all()
@@ -20,21 +26,34 @@ def init_db_command(admin_user: str, admin_pass: str):
if "email" not in cols:
db.session.execute(db.text("ALTER TABLE user ADD COLUMN email VARCHAR(255)"))
db.session.commit()
display_cols = [r[1] for r in db.session.execute(db.text("PRAGMA table_info(display)")).fetchall()]
if "description" not in display_cols:
db.session.execute(db.text("ALTER TABLE display ADD COLUMN description VARCHAR(200)"))
db.session.commit()
except Exception:
# Best-effort; if it fails we continue so fresh DBs still work.
db.session.rollback()
existing = User.query.filter_by(username=admin_user).first()
admin_email = (admin_email or "").strip().lower()
if not admin_email:
raise click.UsageError("--admin-email is required")
existing = User.query.filter_by(email=admin_email).first()
if existing:
if not existing.is_admin:
existing.is_admin = True
existing.email = admin_email
existing.username = admin_email
existing.set_password(admin_pass)
db.session.commit()
click.echo(f"Updated admin user '{admin_user}'.")
click.echo(f"Updated admin user '{admin_email}'.")
return
u = User(username=admin_user, is_admin=True)
u = User(is_admin=True)
u.email = admin_email
u.username = admin_email
u.set_password(admin_pass)
db.session.add(u)
db.session.commit()
click.echo(f"Created admin user '{admin_user}'.")
click.echo(f"Created admin user '{admin_email}'.")