updated digiserver 2

This commit is contained in:
ske087
2025-11-12 16:07:03 +02:00
parent 2deb398fd8
commit e5a00d19a5
44 changed files with 2656 additions and 230 deletions

View File

@@ -4,8 +4,13 @@ Modern Flask application with blueprint architecture
"""
import os
from flask import Flask, render_template
from config import get_config
from extensions import db, bcrypt, login_manager, migrate, cache
from dotenv import load_dotenv
from app.config import DevelopmentConfig, ProductionConfig, TestingConfig
from app.extensions import db, bcrypt, login_manager, migrate, cache
# Load environment variables
load_dotenv()
def create_app(config_name=None):
@@ -18,22 +23,17 @@ def create_app(config_name=None):
Returns:
Flask application instance
"""
app = Flask(__name__, instance_relative_config=True)
app = Flask(__name__)
# Load configuration
if config_name is None:
config_name = os.getenv('FLASK_ENV', 'development')
if config_name == 'production':
config = ProductionConfig
elif config_name == 'testing':
config = TestingConfig
else:
config = DevelopmentConfig
app.config.from_object(get_config(config_name))
# Ensure instance folder exists
os.makedirs(app.instance_path, exist_ok=True)
# Ensure upload folders exist
upload_folder = os.path.join(app.root_path, app.config['UPLOAD_FOLDER'])
logo_folder = os.path.join(app.root_path, app.config['UPLOAD_FOLDERLOGO'])
os.makedirs(upload_folder, exist_ok=True)
os.makedirs(logo_folder, exist_ok=True)
app.config.from_object(config)
# Initialize extensions
db.init_app(app)
@@ -42,16 +42,13 @@ def create_app(config_name=None):
migrate.init_app(app, db)
cache.init_app(app)
# Register blueprints
# Configure Flask-Login
configure_login_manager(app)
# Register components
register_blueprints(app)
# Register error handlers
register_error_handlers(app)
# Register CLI commands
register_commands(app)
# Context processors
register_context_processors(app)
return app
@@ -59,24 +56,35 @@ def create_app(config_name=None):
def register_blueprints(app):
"""Register application blueprints"""
from blueprints.auth import auth_bp
from blueprints.admin import admin_bp
from blueprints.players import players_bp
from blueprints.groups import groups_bp
from blueprints.content import content_bp
from blueprints.api import api_bp
from app.blueprints.main import main_bp
from app.blueprints.auth import auth_bp
from app.blueprints.admin import admin_bp
from app.blueprints.players import players_bp
from app.blueprints.groups import groups_bp
from app.blueprints.content import content_bp
from app.blueprints.api import api_bp
# Register with appropriate URL prefixes
app.register_blueprint(auth_bp)
app.register_blueprint(admin_bp, url_prefix='/admin')
app.register_blueprint(players_bp, url_prefix='/player')
app.register_blueprint(groups_bp, url_prefix='/group')
app.register_blueprint(content_bp, url_prefix='/content')
app.register_blueprint(api_bp, url_prefix='/api')
# Main dashboard route
from blueprints.main import main_bp
# Register blueprints (using URL prefixes from blueprint definitions)
app.register_blueprint(main_bp)
app.register_blueprint(auth_bp)
app.register_blueprint(admin_bp)
app.register_blueprint(players_bp)
app.register_blueprint(groups_bp)
app.register_blueprint(content_bp)
app.register_blueprint(api_bp)
def configure_login_manager(app):
"""Configure Flask-Login"""
from app.models.user import User
login_manager.login_view = 'auth.login'
login_manager.login_message = 'Please log in to access this page.'
login_manager.login_message_category = 'info'
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
def register_error_handlers(app):