""" 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'