| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- """Flask application factory for Work Statistics System."""
- from flask import Flask
- from flask_sqlalchemy import SQLAlchemy
- from flask_cors import CORS
- db = SQLAlchemy()
- def create_app(config_name='default'):
- """Create and configure the Flask application.
-
- Args:
- config_name: Configuration name ('default', 'testing', 'production')
-
- Returns:
- Configured Flask application instance
- """
- app = Flask(__name__)
-
- # Load configuration
- from app.config import config
- app.config.from_object(config[config_name])
-
- # Initialize extensions
- db.init_app(app)
- CORS(app)
-
- # Register API routes
- from app.routes import register_routes
- register_routes(app)
-
- # Create database tables and initialize default admin
- with app.app_context():
- db.create_all()
- _init_default_admin()
-
- return app
- def _init_default_admin():
- """Initialize default admin account if none exists.
-
- This ensures there is always at least one admin account
- available for login when the application starts.
- """
- from flask import current_app
- from app.services.admin_service import AdminService
-
- # Skip default admin creation in testing mode
- if current_app.config.get('TESTING', False):
- return
-
- created, message = AdminService.create_default_admin()
- if created:
- print(f"[Init] {message}")
- # Silently skip if admins already exist
|