mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 05:51:08 -05:00
- Introduced a new loading indicator GIF to improve user experience during asynchronous operations. - Added jQuery Ajax Queue plugin to manage queued Ajax requests, ensuring that new requests wait for previous ones to complete. - Implemented jQuery Autocomplete plugin for enhanced input fields, allowing users to receive suggestions as they type. - Included jQuery Bgiframe plugin to ensure proper rendering of elements in Internet Explorer 6.
104 lines
3.1 KiB
Python
104 lines
3.1 KiB
Python
"""
|
|
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')
|
|
|
|
# CSRF trusted origins for production
|
|
CSRF_TRUSTED_ORIGINS = base.env.list('CSRF_TRUSTED_ORIGINS')
|
|
|
|
# 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)
|
|
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',
|
|
}
|
|
}
|
|
}
|
|
|
|
# Use Redis for sessions in production
|
|
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
|
|
SESSION_CACHE_ALIAS = 'default'
|