"""
Django settings for staging environment.

Only set BACKEND_URL and FRONTEND_URL in your .env:
  BACKEND_URL=https://staging-api.nexa.app
  FRONTEND_URL=https://staging.nexa.app

All CORS, ALLOWED_HOSTS, etc. are derived automatically from base.py.
"""
import os

from .base import *  # noqa: F401, F403

DEBUG = False

# Security settings (slightly less strict than production for debugging)
SECURE_BROWSER_XSS_FILTER = True
SECURE_CONTENT_TYPE_NOSNIFF = True
X_FRAME_OPTIONS = 'DENY'
SECURE_SSL_REDIRECT = os.getenv('SECURE_SSL_REDIRECT', 'True').lower() in ('true', '1', 'yes')
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

# HSTS settings
SECURE_HSTS_SECONDS = 86400  # 1 day (shorter than production)
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = False  # Not preloaded in staging

# Static files
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'

# Email backend for staging (can use console or actual SMTP)
EMAIL_BACKEND = os.getenv(
    'EMAIL_BACKEND',
    'django.core.mail.backends.console.EmailBackend'
)
EMAIL_HOST = os.getenv('EMAIL_HOST')
EMAIL_PORT = int(os.getenv('EMAIL_PORT', '587'))
EMAIL_USE_TLS = os.getenv('EMAIL_USE_TLS', 'True').lower() in ('true', '1', 'yes')
EMAIL_HOST_USER = os.getenv('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = os.getenv('EMAIL_HOST_PASSWORD')

# Logging for staging - more verbose than production
LOGGING['handlers']['file'] = {  # noqa: F405
    'class': 'logging.handlers.RotatingFileHandler',
    'filename': BASE_DIR / 'logs' / 'django.log',  # noqa: F405
    'maxBytes': 10485760,  # 10MB
    'backupCount': 5,
    'formatter': 'verbose',
}
LOGGING['handlers']['staging_debug'] = {  # noqa: F405
    'class': 'logging.handlers.RotatingFileHandler',
    'filename': BASE_DIR / 'logs' / 'debug.log',  # noqa: F405
    'maxBytes': 10485760,  # 10MB
    'backupCount': 3,
    'formatter': 'verbose',
    'level': 'DEBUG',
}
LOGGING['root']['handlers'].append('file')  # noqa: F405
LOGGING['loggers']['django']['level'] = 'INFO'  # noqa: F405

# Cache - Redis for staging
CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': os.getenv('REDIS_URL', 'redis://localhost:6379/1'),
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
        }
    }
}

# Sentry for error tracking (optional)
SENTRY_DSN = os.getenv('SENTRY_DSN')
if SENTRY_DSN:
    import sentry_sdk
    from sentry_sdk.integrations.django import DjangoIntegration
    
    sentry_sdk.init(
        dsn=SENTRY_DSN,
        integrations=[DjangoIntegration()],
        traces_sample_rate=0.5,  # 50% of transactions for staging
        environment='staging',
        send_default_pii=False,
    )
