major update :O
This commit is contained in:
62
src/wsgi.py
62
src/wsgi.py
@@ -1,34 +1,33 @@
|
||||
# Imports
|
||||
from flask import Flask
|
||||
from flask import Flask, render_template, send_file
|
||||
from flask_session import Session
|
||||
|
||||
from dotenv import load_dotenv
|
||||
from os import getenv as env, listdir
|
||||
import logging, importlib
|
||||
from os import getenv as env
|
||||
import logging
|
||||
|
||||
import src.routes.error_handlers
|
||||
import src.routes.dynamic_routes
|
||||
|
||||
# Load env
|
||||
load_dotenv()
|
||||
|
||||
# Create logger
|
||||
stream_handler = logging.StreamHandler()
|
||||
stream_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
|
||||
stream_handler.setLevel(logging.INFO)
|
||||
|
||||
# Create console log handler
|
||||
console_log = logging.StreamHandler()
|
||||
console_log.setFormatter(logging.Formatter("\033[1;32m%(asctime)s\033[0m - \033[1;34m%(levelname)s\033[0m - \033[1;31m%(name)s\033[0m - %(message)s"))
|
||||
console_log.setLevel(logging.INFO)
|
||||
|
||||
# Create file log handler
|
||||
file_log = logging.FileHandler(env('LOG_FILE', default='app.log'), mode=env('LOG_MODE', default='a'))
|
||||
file_log.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(name)s - %(message)s"))
|
||||
file_log.setLevel(logging.DEBUG)
|
||||
file_handler = logging.FileHandler(filename='app.log')
|
||||
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
|
||||
file_handler.setLevel(logging.DEBUG)
|
||||
|
||||
# Add handlers to the logger
|
||||
log = logging.getLogger()
|
||||
log.setLevel(logging.DEBUG)
|
||||
log.addHandler(console_log)
|
||||
log.addHandler(file_log)
|
||||
log.addHandler(stream_handler)
|
||||
log.addHandler(file_handler)
|
||||
log.info("Logging initialized")
|
||||
|
||||
|
||||
# Create flask app
|
||||
app = Flask(
|
||||
__name__,
|
||||
@@ -41,18 +40,25 @@ app.config["SESSION_PERMANENT"] = True
|
||||
app.config["SESSION_TYPE"] = "filesystem"
|
||||
Session(app)
|
||||
|
||||
|
||||
# Load routes
|
||||
routes_dir = env('ROUTES_DIR', default='src/routes')
|
||||
for filename in listdir(routes_dir):
|
||||
if not filename.endswith('.py') and filename.startswith('__'):
|
||||
continue
|
||||
app.register_blueprint(src.routes.error_handlers.bp, url_prefix='/error')
|
||||
app.register_blueprint(src.routes.dynamic_routes.bp, url_prefix='/')
|
||||
|
||||
module_name = f"{routes_dir.replace('/', '.')}.{filename[:-3]}"
|
||||
try:
|
||||
module = importlib.import_module(module_name)
|
||||
if hasattr(module, 'bp'):
|
||||
app.register_blueprint(module.bp)
|
||||
log.info(f"Registered blueprint: {module_name}")
|
||||
except Exception as e:
|
||||
log.error(f"Failed to register blueprint {module_name}: {e}")
|
||||
# Generic routes
|
||||
@app.route('/')
|
||||
def index():
|
||||
return render_template('index.html')
|
||||
|
||||
@app.route('/favicon.ico')
|
||||
def favicon():
|
||||
return send_file('../static/content/other/favicon.ico')
|
||||
|
||||
@app.route('/robots.txt')
|
||||
def robots():
|
||||
return send_file('../static/content/other/robots.txt')
|
||||
|
||||
|
||||
# Route for sitemap.xml
|
||||
@app.route('/sitemap.xml')
|
||||
def sitemap():
|
||||
return send_file('../static/content/other/sitemap.xml')
|
||||
Reference in New Issue
Block a user