import os
from pathlib import Path
import dj_database_url
from dotenv import load_dotenv


load_dotenv()

BASE_DIR = Path(__file__).resolve().parent.parent
SECRET_KEY = os.environ.get("DJANGO_SECRET_KEY", "local-development-only-change-me")
DEBUG = os.environ.get("DJANGO_DEBUG", "True").lower() in {"1", "true", "yes"}
ALLOWED_HOSTS = [h.strip() for h in os.environ.get("DJANGO_ALLOWED_HOSTS", "127.0.0.1,localhost").split(",") if h.strip()]
CSRF_TRUSTED_ORIGINS = [x.strip() for x in os.environ.get("DJANGO_CSRF_TRUSTED_ORIGINS", "").split(",") if x.strip()]

INSTALLED_APPS = [
    "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes",
    "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", "wallets",
]
MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
    "wallets.middleware.AuditIPMiddleware",
]
ROOT_URLCONF = "config.urls"
TEMPLATES = [{
    "BACKEND": "django.template.backends.django.DjangoTemplates", "DIRS": [BASE_DIR / "templates"],
    "APP_DIRS": True, "OPTIONS": {"context_processors": [
        "django.template.context_processors.request", "django.contrib.auth.context_processors.auth",
        "django.contrib.messages.context_processors.messages",
    ]},
}]
WSGI_APPLICATION = "config.wsgi.application"

DATABASE_URL = os.environ.get("DATABASE_URL", "")
if DATABASE_URL:
    DATABASES = {"default": dj_database_url.parse(DATABASE_URL, conn_max_age=600, ssl_require=os.environ.get("DB_SSL_REQUIRE", "false").lower() == "true")}
else:
    DATABASES = {"default": {"ENGINE": "django.db.backends.sqlite3", "NAME": BASE_DIR / "db.sqlite3"}}

AUTH_PASSWORD_VALIDATORS = [
    {"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator"},
    {"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator"},
    {"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator"},
]
LANGUAGE_CODE = "en-us"
TIME_ZONE = "Africa/Dar_es_Salaam"
USE_I18N = True
USE_TZ = True
STATIC_URL = "static/"
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
LOGIN_URL = "login"

ALLOW_TEST_FUNDS = os.environ.get("ALLOW_TEST_FUNDS", "true" if DEBUG else "false").lower() in {"1", "true", "yes"}
PAYMENT_PROVIDER_MODE = os.environ.get("PAYMENT_PROVIDER_MODE", "sandbox")

SESSION_COOKIE_SECURE = not DEBUG
CSRF_COOKIE_SECURE = not DEBUG
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_SAMESITE = "Lax"
CSRF_COOKIE_SAMESITE = "Lax"
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_REFERRER_POLICY = "same-origin"
X_FRAME_OPTIONS = "DENY"
if not DEBUG:
    SECURE_SSL_REDIRECT = True
    SECURE_HSTS_SECONDS = 31536000
    SECURE_HSTS_INCLUDE_SUBDOMAINS = True
    SECURE_HSTS_PRELOAD = True

# TRON / USDT testnet integration. Mainnet is deliberately blocked by this
# project configuration until a separate production review is completed.
TRON_NETWORK = os.environ.get("TRON_NETWORK", "shasta").lower()
TRON_RPC_URL = os.environ.get("TRON_RPC_URL", "https://api.shasta.trongrid.io")
TRON_USDT_CONTRACT = os.environ.get("TRON_USDT_CONTRACT", "TG3XXyExBkPp9nzdajDZsozEu4BkaSJozs")
TRON_PRIVATE_KEY = os.environ.get("TRON_PRIVATE_KEY", "")
TRON_FEE_LIMIT_SUN = int(os.environ.get("TRON_FEE_LIMIT_SUN", "100000000"))
TRON_CONFIRMATIONS = int(os.environ.get("TRON_CONFIRMATIONS", "1"))
TRON_ENABLE_MAINNET = os.environ.get("TRON_ENABLE_MAINNET", "false").lower() in {"1", "true", "yes"}
TRON_MOCK_MODE = os.environ.get("TRON_MOCK_MODE", "false").lower() in {"1", "true", "yes"}
TRON_MOCK_USDT_BALANCE_MINOR = int(os.environ.get("TRON_MOCK_USDT_BALANCE_MINOR", "1000000000"))
