mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-24 05:31:09 -05:00
- Introduced a comprehensive Secret Management Guide detailing best practices, secret classification, development setup, production management, rotation procedures, and emergency protocols. - Implemented a client-side performance monitoring script to track various metrics including page load performance, paint metrics, layout shifts, and memory usage. - Enhanced search accessibility with keyboard navigation support for search results, ensuring compliance with WCAG standards and improving user experience.
89 lines
3.0 KiB
Python
Executable File
89 lines
3.0 KiB
Python
Executable File
#!/usr/bin/env python
|
|
"""Django's command-line utility for administrative tasks."""
|
|
|
|
import os
|
|
import sys
|
|
|
|
|
|
def main():
|
|
"""Run administrative tasks."""
|
|
# Auto-detect environment based on command line arguments and environment variables
|
|
settings_module = detect_settings_module()
|
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", settings_module)
|
|
|
|
try:
|
|
from django.core.management import execute_from_command_line
|
|
except ImportError as exc:
|
|
print(
|
|
"Error: Couldn't import Django. Make sure Django is installed and "
|
|
"available on your PYTHONPATH environment variable. "
|
|
"Did you forget to activate a virtual environment?"
|
|
)
|
|
print("\nTo set up your development environment, try:")
|
|
print(" uv run manage.py setup_dev")
|
|
raise ImportError(
|
|
"Couldn't import Django. Are you sure it's installed and "
|
|
"available on your PYTHONPATH environment variable? Did you "
|
|
"forget to activate a virtual environment?"
|
|
) from exc
|
|
|
|
execute_from_command_line(sys.argv)
|
|
|
|
|
|
def detect_settings_module():
|
|
"""
|
|
Auto-detect the appropriate settings module based on context.
|
|
|
|
Detection order:
|
|
1. DJANGO_SETTINGS_MODULE environment variable (explicit override)
|
|
2. Test command detection (uses test settings)
|
|
3. Production indicators (environment variables from cloud providers)
|
|
4. Staging indicators (staging-specific environment variables)
|
|
5. DEBUG environment variable (False = production)
|
|
6. Default to local development
|
|
|
|
Returns:
|
|
str: The settings module path (e.g., "config.django.local")
|
|
"""
|
|
# Check if DJANGO_SETTINGS_MODULE is already set
|
|
if "DJANGO_SETTINGS_MODULE" in os.environ:
|
|
return os.environ["DJANGO_SETTINGS_MODULE"]
|
|
|
|
# Test environment detection
|
|
if "test" in sys.argv:
|
|
if "accounts" in sys.argv:
|
|
return "config.django.test_accounts"
|
|
return "config.django.test"
|
|
|
|
# Production indicators from various cloud providers
|
|
production_indicators = [
|
|
"DYNO", # Heroku
|
|
"AWS_EXECUTION_ENV", # AWS Lambda
|
|
"AWS_ECS_CLUSTER", # AWS ECS
|
|
"KUBERNETES_SERVICE_HOST", # Kubernetes
|
|
"DOCKER_CONTAINER", # Docker
|
|
"FLY_APP_NAME", # Fly.io
|
|
"RAILWAY_ENVIRONMENT", # Railway
|
|
"RENDER", # Render
|
|
"VERCEL", # Vercel
|
|
]
|
|
|
|
if any(indicator in os.environ for indicator in production_indicators):
|
|
return "config.django.production"
|
|
|
|
# Staging detection (explicit staging environment variable)
|
|
if os.environ.get("ENVIRONMENT", "").lower() in ("staging", "stage"):
|
|
return "config.django.production" # Use production settings for staging
|
|
|
|
# Check DEBUG environment variable
|
|
debug = os.environ.get("DEBUG", "").lower()
|
|
if debug in ("false", "0", "no", "off"):
|
|
return "config.django.production"
|
|
|
|
# Default to local development
|
|
return "config.django.local"
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|