Now fabric function creates app
This commit is contained in:
		
							
								
								
									
										78
									
								
								api/app.py
									
									
									
									
									
								
							
							
						
						
									
										78
									
								
								api/app.py
									
									
									
									
									
								
							| @@ -4,44 +4,56 @@ from flask_jwt_extended import JWTManager | ||||
| from jwt import ExpiredSignatureError | ||||
| from models import db | ||||
| import os | ||||
| from utils import init_db | ||||
| from views import user_bp | ||||
| from task_views import task_bp | ||||
| from user_views import user_bp, init_db | ||||
| from werkzeug.exceptions import HTTPException | ||||
|  | ||||
| # App initialization | ||||
| load_dotenv() | ||||
| app = Flask(__name__) | ||||
| app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('SQLALCHEMY_DATABASE_URI') | ||||
| app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True | ||||
| app.config['JWT_SECRET_KEY'] = os.getenv('JWT_SECRET_KEY', 'changeme') | ||||
| def create_app(config_name="default"): | ||||
|     """Creates and returns a new instance of Flask app.""" | ||||
|     load_dotenv() | ||||
|     app = Flask(__name__) | ||||
|      | ||||
| # Blueprint registration | ||||
| app.register_blueprint(user_bp) | ||||
|     # Database settings | ||||
|     if config_name == "testing": | ||||
|         app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///:memory:"  # Database in memory | ||||
|         app.config["TESTING"] = True | ||||
|     else: | ||||
|         app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv("SQLALCHEMY_DATABASE_URI") | ||||
|      | ||||
| # Database and JWT initialization | ||||
| db.init_app(app) | ||||
| jwt = JWTManager(app) | ||||
|     app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False | ||||
|     app.config["JWT_SECRET_KEY"] = os.getenv("JWT_SECRET_KEY", "changeme") | ||||
|  | ||||
| # Global error handler | ||||
| @app.errorhandler(Exception) | ||||
| def global_error_handler(error): | ||||
|     if isinstance(error, HTTPException): | ||||
|         response = jsonify({"error": error.description}) | ||||
|         response.status_code = error.code | ||||
|     elif isinstance(error, ExpiredSignatureError): | ||||
|         response = jsonify({"error": "Token has expired"}) | ||||
|         response.status_code = 401 | ||||
|     else:  # Wszystkie inne błędy | ||||
|         response = jsonify({"error": str(error)}) | ||||
|         response.status_code = 500 | ||||
|     return response | ||||
|     # Blueprints registration | ||||
|     app.register_blueprint(user_bp) | ||||
|     app.register_blueprint(task_bp) | ||||
|  | ||||
|     # Database and JWT initialization | ||||
|     db.init_app(app) | ||||
|     jwt = JWTManager(app) | ||||
|  | ||||
|     # Global error handler | ||||
|     @app.errorhandler(Exception) | ||||
|     def global_error_handler(error): | ||||
|         if isinstance(error, HTTPException): | ||||
|             response = jsonify({"error": error.description}) | ||||
|             response.status_code = error.code | ||||
|         elif isinstance(error, ExpiredSignatureError): | ||||
|             response = jsonify({"error": "Token has expired"}) | ||||
|             response.status_code = 401 | ||||
|         else:  # All other errors | ||||
|             response = jsonify({"error": str(error)}) | ||||
|             response.status_code = 500 | ||||
|         return response | ||||
|  | ||||
|     # Fill database by initial values (only if we are not testing) | ||||
|     with app.app_context(): | ||||
|         db.create_all() | ||||
|         if config_name != "testing": | ||||
|             init_db() | ||||
|     return app | ||||
|  | ||||
|  | ||||
| # Fill database by initial values | ||||
| with app.app_context(): | ||||
|     db.create_all() | ||||
|     init_db() | ||||
|  | ||||
| # Server start | ||||
| # Server start only if we run app directly | ||||
| if __name__ == "__main__": | ||||
|     app.run(host='0.0.0.0') | ||||
|     app = create_app() | ||||
|     app.run(host="0.0.0.0") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user