Refactor test utilities and enhance ASGI settings

- Cleaned up and standardized assertions in ApiTestMixin for API response validation.
- Updated ASGI settings to use os.environ for setting the DJANGO_SETTINGS_MODULE.
- Removed unused imports and improved formatting in settings.py.
- Refactored URL patterns in urls.py for better readability and organization.
- Enhanced view functions in views.py for consistency and clarity.
- Added .flake8 configuration for linting and style enforcement.
- Introduced type stubs for django-environ to improve type checking with Pylance.
This commit is contained in:
pacnpal
2025-08-20 19:51:59 -04:00
parent 69c07d1381
commit 66ed4347a9
230 changed files with 15094 additions and 11578 deletions

View File

@@ -4,25 +4,25 @@ Production settings for thrillwiki project.
# Import the module and use its members, e.g., base.BASE_DIR, base***REMOVED***
from . import base
# Import the module and use its members, e.g., database.DATABASES
from ..settings import database
# Import the module and use its members, e.g., email.EMAIL_HOST
from ..settings import email
# Import the module and use its members, e.g., security.SECURE_HSTS_SECONDS
from ..settings import security
# Import the module and use its members, e.g., email.EMAIL_HOST
from ..settings import email
# Import the module and use its members, e.g., security.SECURE_HSTS_SECONDS
from ..settings import security
# Production settings
DEBUG = False
# Allowed hosts must be explicitly set in production
ALLOWED_HOSTS = base.env.list('ALLOWED_HOSTS')
ALLOWED_HOSTS = base.env.list("ALLOWED_HOSTS")
# CSRF trusted origins for production
CSRF_TRUSTED_ORIGINS = base.env.list('CSRF_TRUSTED_ORIGINS')
CSRF_TRUSTED_ORIGINS = base.env.list("CSRF_TRUSTED_ORIGINS")
# Security settings for production
SECURE_SSL_REDIRECT = True
@@ -34,70 +34,70 @@ SECURE_HSTS_PRELOAD = True
# Production logging
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
'style': '{',
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"verbose": {
"format": "{levelname} {asctime} {module} {process:d} {thread:d} {message}",
"style": "{",
},
'simple': {
'format': '{levelname} {message}',
'style': '{',
"simple": {
"format": "{levelname} {message}",
"style": "{",
},
},
'handlers': {
'file': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': base.BASE_DIR / 'logs' / 'django.log',
'maxBytes': 1024*1024*15, # 15MB
'backupCount': 10,
'formatter': 'verbose',
"handlers": {
"file": {
"level": "INFO",
"class": "logging.handlers.RotatingFileHandler",
"filename": base.BASE_DIR / "logs" / "django.log",
"maxBytes": 1024 * 1024 * 15, # 15MB
"backupCount": 10,
"formatter": "verbose",
},
'error_file': {
'level': 'ERROR',
'class': 'logging.handlers.RotatingFileHandler',
'filename': base.BASE_DIR / 'logs' / 'django_error.log',
'maxBytes': 1024*1024*15, # 15MB
'backupCount': 10,
'formatter': 'verbose',
"error_file": {
"level": "ERROR",
"class": "logging.handlers.RotatingFileHandler",
"filename": base.BASE_DIR / "logs" / "django_error.log",
"maxBytes": 1024 * 1024 * 15, # 15MB
"backupCount": 10,
"formatter": "verbose",
},
},
'root': {
'handlers': ['file'],
'level': 'INFO',
"root": {
"handlers": ["file"],
"level": "INFO",
},
'loggers': {
'django': {
'handlers': ['file', 'error_file'],
'level': 'INFO',
'propagate': False,
"loggers": {
"django": {
"handlers": ["file", "error_file"],
"level": "INFO",
"propagate": False,
},
'thrillwiki': {
'handlers': ['file', 'error_file'],
'level': 'INFO',
'propagate': False,
"thrillwiki": {
"handlers": ["file", "error_file"],
"level": "INFO",
"propagate": False,
},
},
}
# Static files collection for production
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"
# Cache settings for production (Redis recommended)
redis_url = base.env.str('REDIS_URL', default=None)
redis_url = base.env.str("REDIS_URL", default=None)
if redis_url:
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': redis_url,
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": redis_url,
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
},
}
}
# Use Redis for sessions in production
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
SESSION_CACHE_ALIAS = 'default'
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"