Files
face-attendance/app/commands.py
2026-05-01 21:24:21 +03:30

29 lines
1.0 KiB
Python

from __future__ import annotations
import click
from flask import Flask
from app.extensions import db
from app.models import Account, Role
def register_commands(app: Flask) -> None:
@app.cli.command("create-admin")
@click.option("--username", prompt=True)
@click.option("--email", prompt=True)
@click.option("--full-name", prompt=True)
@click.password_option()
def create_admin(username: str, email: str, full_name: str, password: str) -> None:
"""Create an initial administrator account."""
username = username.strip().lower()
email = email.strip().lower()
if Account.query.filter((Account.username == username) | (Account.email == email)).first():
raise click.ClickException("An account with that username or email already exists.")
account = Account(username=username, email=email, full_name=full_name.strip(), role=Role.ADMIN.value)
account.set_password(password)
db.session.add(account)
db.session.commit()
click.echo(f"Created admin account: {username}")