Spaces:
Running
Running
| import os | |
| from datetime import timedelta | |
| class Config: | |
| """Base configuration""" | |
| # Flask | |
| SECRET_KEY = os.environ.get('SECRET_KEY') or os.urandom(24) | |
| # File Upload | |
| UPLOAD_FOLDER = 'static/uploads/' | |
| ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'webp'} | |
| MAX_CONTENT_LENGTH = 16 * 1024 * 1024 # 16 MB | |
| # Session | |
| PERMANENT_SESSION_LIFETIME = timedelta(hours=1) | |
| SESSION_COOKIE_SECURE = False | |
| SESSION_COOKIE_HTTPONLY = True | |
| SESSION_COOKIE_SAMESITE = 'Lax' | |
| # Model | |
| MODEL_NAME = "wambugu71/crop_leaf_diseases_vit" | |
| # Logging | |
| LOG_LEVEL = 'INFO' | |
| class DevelopmentConfig(Config): | |
| """Development configuration""" | |
| DEBUG = True | |
| TESTING = False | |
| class ProductionConfig(Config): | |
| """Production configuration""" | |
| DEBUG = False | |
| TESTING = False | |
| SESSION_COOKIE_SECURE = True | |
| # Rate limiting | |
| RATELIMIT_ENABLED = True | |
| RATELIMIT_DEFAULT = "100 per hour" | |
| # Security headers | |
| TALISMAN_FORCE_HTTPS = False # Set to True if using HTTPS | |
| class TestingConfig(Config): | |
| """Testing configuration""" | |
| DEBUG = True | |
| TESTING = True | |
| # Configuration dictionary | |
| config = { | |
| 'development': DevelopmentConfig, | |
| 'production': ProductionConfig, | |
| 'testing': TestingConfig, | |
| 'default': DevelopmentConfig | |
| } | |
| def get_config(env=None): | |
| """Get configuration based on environment""" | |
| if env is None: | |
| env = os.environ.get('FLASK_ENV', 'development') | |
| return config.get(env, config['default']) |