41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
"""
|
|
init_db.py — Run once after `flask db upgrade` to:
|
|
1. Create all tables (idempotent)
|
|
2. Create the default admin user if no admin exists
|
|
|
|
Usage:
|
|
python init_db.py
|
|
(or it runs automatically via Docker Compose CMD)
|
|
"""
|
|
import os
|
|
from app import create_app
|
|
from app.extensions import db
|
|
from app.models.admin_user import AdminUser
|
|
|
|
app = create_app(os.environ.get('FLASK_ENV', 'development'))
|
|
|
|
with app.app_context():
|
|
db.create_all()
|
|
|
|
# Only create default admin if none exists
|
|
if AdminUser.query.count() == 0:
|
|
default_user = os.environ.get('DEFAULT_ADMIN_USER', 'admin')
|
|
default_pass = os.environ.get('DEFAULT_ADMIN_PASS', 'ChangeMe123!')
|
|
default_email = os.environ.get('DEFAULT_ADMIN_EMAIL', 'admin@company.local')
|
|
|
|
admin = AdminUser(
|
|
username=default_user,
|
|
email=default_email,
|
|
full_name='System Administrator',
|
|
role='admin',
|
|
)
|
|
admin.set_password(default_pass)
|
|
db.session.add(admin)
|
|
db.session.commit()
|
|
print(f'[init_db] Default admin created — username: {default_user}')
|
|
print(f'[init_db] *** CHANGE THE DEFAULT PASSWORD IMMEDIATELY ***')
|
|
else:
|
|
print('[init_db] Admin users already exist — skipping default creation.')
|
|
|
|
print('[init_db] Database initialised.')
|