mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 16:11:08 -05:00
- Implemented extensive test cases for the Parks API, covering endpoints for listing, retrieving, creating, updating, and deleting parks. - Added tests for filtering, searching, and ordering parks in the API. - Created tests for error handling in the API, including malformed JSON and unsupported methods. - Developed model tests for Park, ParkArea, Company, and ParkReview models, ensuring validation and constraints are enforced. - Introduced utility mixins for API and model testing to streamline assertions and enhance test readability. - Included integration tests to validate complete workflows involving park creation, retrieval, updating, and deletion.
98 lines
3.1 KiB
Python
98 lines
3.1 KiB
Python
"""
|
|
Production settings for thrillwiki project.
|
|
"""
|
|
|
|
from . import base # Import the module and use its members, e.g., base.BASE_DIR, base***REMOVED***
|
|
from ..settings import database # Import the module and use its members, e.g., database.DATABASES
|
|
from ..settings import email # Import the module and use its members, e.g., email.EMAIL_HOST
|
|
from ..settings import security # Import the module and use its members, e.g., security.SECURE_HSTS_SECONDS
|
|
from ..settings import email # Import the module and use its members, e.g., email.EMAIL_HOST
|
|
from ..settings import security # Import the module and use its members, e.g., security.SECURE_HSTS_SECONDS
|
|
|
|
# Production settings
|
|
DEBUG = False
|
|
|
|
# Allowed hosts must be explicitly set in production
|
|
ALLOWED_HOSTS = base***REMOVED***('ALLOWED_HOSTS')
|
|
|
|
# CSRF trusted origins for production
|
|
CSRF_TRUSTED_ORIGINS = base***REMOVED***('CSRF_TRUSTED_ORIGINS', default=[])
|
|
|
|
# Security settings for production
|
|
SECURE_SSL_REDIRECT = True
|
|
SESSION_COOKIE_SECURE = True
|
|
CSRF_COOKIE_SECURE = True
|
|
SECURE_HSTS_SECONDS = 31536000 # 1 year
|
|
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
|
|
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': '{',
|
|
},
|
|
'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',
|
|
},
|
|
'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',
|
|
},
|
|
'loggers': {
|
|
'django': {
|
|
'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'
|
|
|
|
# Cache settings for production (Redis recommended)
|
|
if base***REMOVED***('REDIS_URL', default=None):
|
|
CACHES = {
|
|
'default': {
|
|
'BACKEND': 'django_redis.cache.RedisCache',
|
|
'LOCATION': base***REMOVED***('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'
|
|
|