first commit
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
from flask import Flask
|
||||
from flask_cors import CORS
|
||||
from flask_migrate import Migrate
|
||||
from flask_jwt_extended import JWTManager
|
||||
import logging
|
||||
import os
|
||||
|
||||
from .config import config_by_name
|
||||
from .models import db
|
||||
|
||||
|
||||
def create_app(config_name=None):
|
||||
app = Flask(__name__)
|
||||
|
||||
if config_name is None:
|
||||
config_name = os.environ.get("FLASK_ENV", "development")
|
||||
|
||||
app.config.from_object(config_by_name[config_name])
|
||||
|
||||
CORS(app, origins=app.config["CORS_ORIGINS"])
|
||||
|
||||
db.init_app(app)
|
||||
migrate = Migrate(app, db)
|
||||
|
||||
jwt = JWTManager(app)
|
||||
|
||||
setup_logging(app)
|
||||
|
||||
register_blueprints(app)
|
||||
|
||||
setup_error_handlers(app)
|
||||
|
||||
return app
|
||||
|
||||
|
||||
def setup_logging(app):
|
||||
log_dir = os.path.dirname(app.config["LOG_FILE"])
|
||||
if not os.path.exists(log_dir):
|
||||
os.makedirs(log_dir)
|
||||
|
||||
logging.basicConfig(
|
||||
level=getattr(logging, app.config["LOG_LEVEL"]),
|
||||
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
|
||||
handlers=[logging.FileHandler(app.config["LOG_FILE"]), logging.StreamHandler()],
|
||||
)
|
||||
|
||||
|
||||
def register_blueprints(app):
|
||||
from .api import api_bp
|
||||
|
||||
app.register_blueprint(api_bp, url_prefix="/api")
|
||||
|
||||
|
||||
def setup_error_handlers(app):
|
||||
@app.errorhandler(404)
|
||||
def not_found(error):
|
||||
return {"error": "Not found"}, 404
|
||||
|
||||
@app.errorhandler(500)
|
||||
def internal_error(error):
|
||||
app.logger.error(f"Internal error: {error}")
|
||||
return {"error": "Internal server error"}, 500
|
||||
Reference in New Issue
Block a user