Spaces:
Runtime error
Runtime error
File size: 2,245 Bytes
d06b99c 7f8f9a6 d06b99c 7f8f9a6 d06b99c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | """
TreeTrack Application Constants
Centralized configuration constants to eliminate magic numbers
"""
from datetime import timedelta
# Authentication Constants
SESSION_TIMEOUT_HOURS = 8
SESSION_TIMEOUT = timedelta(hours=SESSION_TIMEOUT_HOURS)
AUTH_TOKEN_LENGTH = 32
# File Upload Constants
MAX_FILE_SIZE_MB = 10
MAX_FILE_SIZE_BYTES = MAX_FILE_SIZE_MB * 1024 * 1024
DEFAULT_SIGNED_URL_EXPIRY = 3600 # 1 hour
EXTENDED_SIGNED_URL_EXPIRY = 7200 # 2 hours
# Database Constants
DEFAULT_TREES_LIMIT = 100
MAX_TREES_LIMIT = 1000
DEFAULT_SPECIES_LIMIT = 20
DEFAULT_OFFSET = 0
# Validation Constants (units in feet)
MAX_SPECIES_NAME_LENGTH = 200
MAX_NOTES_LENGTH = 2000
MAX_STORYTELLING_TEXT_LENGTH = 5000
MAX_TREE_CODE_LENGTH = 20
MAX_HEIGHT_FEET = 1000
MAX_GIRTH_FEET = 200
# Application Constants
APP_VERSION = "3.0.0"
BUILD_TIME_KEY = "BUILD_TIME"
# File Categories
VALID_IMAGE_CATEGORIES = ["Leaf", "Bark", "Fruit", "Seed", "Flower", "Full tree"]
# Utilities
VALID_UTILITIES = [
"Religious", "Timber", "Biodiversity", "Hydrological benefit",
"Faunal interaction", "Food", "Medicine", "Shelter", "Cultural"
]
# Phenology Stages
VALID_PHENOLOGY_STAGES = [
"New leaves", "Old leaves", "Open flowers", "Fruiting",
"Ripe fruit", "Recent fruit drop", "Other"
]
# API Rate Limiting
DEFAULT_RATE_LIMIT = 100 # requests per minute
BURST_RATE_LIMIT = 200
# Pagination Constants
MIN_LIMIT = 1
MAX_LIMIT_PER_REQUEST = 1000
# Logging
LOG_LEVEL_DEFAULT = "INFO"
LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
# Security
BCRYPT_ROUNDS = 12 # For password hashing
# Cache TTL
CACHE_TTL_SECONDS = 300 # 5 minutes
CACHE_TTL_LONG_SECONDS = 3600 # 1 hour
# Default Development Credentials
DEV_PASSWORDS = {
'AALEKH_PASSWORD': 'dev_password_aalekh',
'ADMIN_PASSWORD': 'dev_password_admin',
'ISHITA_PASSWORD': 'dev_password_ishita',
'JEEB_PASSWORD': 'dev_password_jeeb'
}
# Environment Variables
REQUIRED_ENV_VARS = {
'production': [
'SUPABASE_URL',
'SUPABASE_ANON_KEY',
'SUPABASE_SERVICE_ROLE_KEY',
'AALEKH_PASSWORD',
'ADMIN_PASSWORD',
'ISHITA_PASSWORD',
'JEEB_PASSWORD'
],
'development': [] # Optional in development
}
|