__init__.py 998 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import os
  2. from flask import Flask
  3. from flask_sqlalchemy import SQLAlchemy
  4. from flask_migrate import Migrate
  5. from flask_cors import CORS
  6. from config.settings import config
  7. db = SQLAlchemy()
  8. migrate = Migrate()
  9. def create_app(config_name=None):
  10. """Application factory pattern"""
  11. if config_name is None:
  12. config_name = os.environ.get('FLASK_ENV', 'development')
  13. app = Flask(__name__)
  14. app.config.from_object(config[config_name])
  15. # Initialize extensions
  16. db.init_app(app)
  17. migrate.init_app(app, db)
  18. CORS(app)
  19. # Create upload directories
  20. os.makedirs(app.config.get('UPLOAD_FOLDER', 'uploads'), exist_ok=True)
  21. os.makedirs(app.config.get('REPORTS_FOLDER', 'reports'), exist_ok=True)
  22. # Register blueprints
  23. from app.api import api_bp
  24. app.register_blueprint(api_bp, url_prefix='/api')
  25. # Register error handlers
  26. from app.errors import register_error_handlers
  27. register_error_handlers(app)
  28. return app