"""
Django settings for auto_recruiter project.

Generated by 'django-admin startproject' using Django 6.0.

For more information on this file, see
https://docs.djangoproject.com/en/6.0/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/6.0/ref/settings/
"""

from pathlib import Path
from datetime import timedelta
from corsheaders.defaults import default_headers

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# Use the X-Forwarded-Host header from the proxy
# USE_X_FORWARDED_HOST = True

# Define the header that indicates a secure connection
# Nginx typically uses 'HTTP_X_FORWARDED_PROTO'
# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

# Optional, but recommended for security:
# Redirect all HTTP requests to HTTPS (handled by Django after proxy detection)
# SECURE_SSL_REDIRECT = True

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/6.0/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-nw*uxw+g9mtmx^&k5&*m7srpm4sn_7^9_+7!#j0ypdxf@wbcjn'

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'  # 'smtp-mail.outlook.com' #
EMAIL_USE_TLS = True
# https://smshorizon.co.in/api/sendsms.php?user=Rajamohan@7677&apikey=qtvLzOgR2B0ZvJE5WE4O&mobile=xxyy&message=xxyy&senderid=xxyy&type=txt&tid=xyz
EMAIL_PORT = 587  # 25 #
# 'raghu.s@itconnectus.com' #'operations@varnatravels.com' #
EMAIL_HOST_USER = 'selvasivachandran0002@gmail.com' #'raghu.s@itconnectus.com'
EMAIL_HOST_PASSWORD = 'ykra ntdd dwuh guqr'  # 'Ops@2023' #

LINKEDIN_TOKEN_URL = "https://www.linkedin.com/oauth/v2/accessToken"
LINKEDIN_UGC_URL = "https://api.linkedin.com/v2/ugcPosts"
LINKEDIN_USERINFO = "https://api.linkedin.com/v2/userinfo"
LINKEDIN_CLIENT_ID = "86l31756beisu2"
LINKEDIN_CLIENT_SECRET = "WPL_AP1.wu2v3nIQq60bBcHF.yf8/Wg=="
LINKEDIN_REDIRECT_URI = "http://localhost:3000/linkedin/callback"
LINKEDIN_SYSTEM_ACCESS_TOKEN = "AQUo1HdQgjSk2xYz4q-49sX7XHSlY4xwBn2k1BP4_oT2nUsVkgaA8xkINvFVfcHtEC29TQlGe90si7HGXb8wKTMjhaes-FzzSUV_YM6jkzt4klSocIP0wStuNIAmurr1InFNTVHzhz3QpJkmylffzJnA2KljWy0wSg4l-ptQmBKAecvuSyCsiiFobJ2zyu13I9K9Tir036aHlxp8cznKxhrEn3-gpLX5sr7zooOsC2RwRm15S_2zIvhqxfHy3-CCz-IdRwLOyrvpDjgwY4NuMjUGfWtXTlxb-7gbrVAmNFK_vOFRFDfW8IXGNtj53RqzNCF_uUGJ-ZTmlXAVB67gLVCTHcKv0Q"
LINKEDIN_SYSTEM_URN = "L_lr1DtA1w"

WHATSAPP_PHONE_NUMBER_ID = "965557749981141"
WHATSAPP_ACCESS_TOKEN = "EAASBSp41lt4BQtcKZCmRqBgLDknWBwaWoXtPJI8f25DiNl5luudREMYuICZAtweo83xq0uemfrPqvu3U4HsoiccStZAH9E1ZCGLZBIvHxrXYBdLQtUWMOsu2D9IE51ugukI1yop8ie0kk8bGbxE0VQZCm9Kji8a1Kjx30o8yK7OkzXLgq2QvkuIulIH5SoHZAFior15tDxGrVUNE8TyHZCkkH845CXuWeubQpBSMpiAua0srwCi9ZCtUZCyz3K83AoIyOeVeTYv6QaIj7C75ZANWAZDZD"

FAST2SMS_API_KEY = ""
FAST2SMS_URL = "https://www.fast2sms.com/dev/bulkV2"


# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ["*"]

CSRF_TRUSTED_ORIGINS = [
    "http://localhost:3000",
    "http://localhost:3001",
    "http://localhost:3002",
    "https://auto-recruiter.itconnectus.com",
    "https://auto-recruiter-api.itconnectus.com",
    "https://career.itconnectus.com",
    "https://ai-test.itconnectus.com"
]

CORS_ALLOWED_ORIGINS = [
    "http://localhost:3000",
    "http://127.0.0.1:3000",
    "https://auto-recruiter.itconnectus.com",
    "https://auto-recruiter-api.itconnectus.com",
    "http://localhost:3001",
    "http://localhost:3002",
    "https://career.itconnectus.com",
    "https://ai-test.itconnectus.com"
]

X_FRAME_OPTIONS = "SAMEORIGIN"

CORS_ALLOW_CREDENTIALS = True

SESSION_COOKIE_SAMESITE = "Lax"
SESSION_COOKIE_SECURE = False 
CSRF_COOKIE_SAMESITE = "Lax"
CSRF_COOKIE_SECURE = False

CORS_ALLOW_HEADERS = list(default_headers) + [
    "authorization",
]

SIMPLE_JWT = {
    "ACCESS_TOKEN_LIFETIME": timedelta(days=1),
    "REFRESH_TOKEN_LIFETIME": timedelta(days=1),
    "ROTATE_REFRESH_TOKENS": True,
    "BLACKLIST_AFTER_ROTATION": True,
}

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_FILTER_BACKENDS': (
        'django_filters.rest_framework.DjangoFilterBackend',
    ),
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',
    ),
}

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'admin_users',
    "corsheaders",
    'masters',
    'arllm',
    'auditlog',
    "pgvector.django"
]

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',

    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',

    'masters.middleware.JWTUserMiddleware',

    'auditlog.middleware.AuditlogMiddleware',

    'masters.middleware.ForceAllowFrameForMedia',
]

ROOT_URLCONF = 'auto_recruiter.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        '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 = 'auto_recruiter.wsgi.application'


# Database
# https://docs.djangoproject.com/en/6.0/ref/settings/#databases

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": "ar_db",
        "USER": "tachi_user",
        "PASSWORD": "Kata@123",
        "HOST": "localhost",
        "PORT": "5432",
    }
}


# Password validation
# https://docs.djangoproject.com/en/6.0/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/6.0/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/6.0/howto/static-files/

STATIC_URL = 'static/'

# MEDIA_URL = "https://auto-recruiter-api.itconnectus.com/media/"
MEDIA_URL = "/media/"
MEDIA_ROOT = BASE_DIR / "media"
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

USE_X_FORWARDED_HOST = True
SECURE_SSL_REDIRECT = False

OTP_EXPIRY_MINUTES = 2
OTP_EXPIRY_SECONDS = OTP_EXPIRY_MINUTES * 60

INTERVIEW_OTP_EXPIRY_MINUTES = 10
INTERVIEW_OTP_EXPIRY_SECONDS = INTERVIEW_OTP_EXPIRY_MINUTES * 60

INTERVIEW_VIDEO_SILENCE_BUFFER_SECONDS = 2

COUNTRY_CODES = [
    {"name": "Afghanistan", "code": "AF", "dial_code": "+93"},
    {"name": "Albania", "code": "AL", "dial_code": "+355"},
    {"name": "Algeria", "code": "DZ", "dial_code": "+213"},
    {"name": "Argentina", "code": "AR", "dial_code": "+54"},
    {"name": "Australia", "code": "AU", "dial_code": "+61"},
    {"name": "Austria", "code": "AT", "dial_code": "+43"},
    {"name": "Bangladesh", "code": "BD", "dial_code": "+880"},
    {"name": "Belgium", "code": "BE", "dial_code": "+32"},
    {"name": "Brazil", "code": "BR", "dial_code": "+55"},
    {"name": "Canada", "code": "CA", "dial_code": "+1"},
    {"name": "China", "code": "CN", "dial_code": "+86"},
    {"name": "France", "code": "FR", "dial_code": "+33"},
    {"name": "Germany", "code": "DE", "dial_code": "+49"},
    {"name": "India", "code": "IN", "dial_code": "+91"},
    {"name": "Indonesia", "code": "ID", "dial_code": "+62"},
    {"name": "Ireland", "code": "IE", "dial_code": "+353"},
    {"name": "Italy", "code": "IT", "dial_code": "+39"},
    {"name": "Japan", "code": "JP", "dial_code": "+81"},
    {"name": "Malaysia", "code": "MY", "dial_code": "+60"},
    {"name": "Mexico", "code": "MX", "dial_code": "+52"},
    {"name": "Netherlands", "code": "NL", "dial_code": "+31"},
    {"name": "New Zealand", "code": "NZ", "dial_code": "+64"},
    {"name": "Norway", "code": "NO", "dial_code": "+47"},
    {"name": "Pakistan", "code": "PK", "dial_code": "+92"},
    {"name": "Philippines", "code": "PH", "dial_code": "+63"},
    {"name": "Russia", "code": "RU", "dial_code": "+7"},
    {"name": "Saudi Arabia", "code": "SA", "dial_code": "+966"},
    {"name": "Singapore", "code": "SG", "dial_code": "+65"},
    {"name": "South Africa", "code": "ZA", "dial_code": "+27"},
    {"name": "South Korea", "code": "KR", "dial_code": "+82"},
    {"name": "Spain", "code": "ES", "dial_code": "+34"},
    {"name": "Sri Lanka", "code": "LK", "dial_code": "+94"},
    {"name": "Sweden", "code": "SE", "dial_code": "+46"},
    {"name": "Switzerland", "code": "CH", "dial_code": "+41"},
    {"name": "Thailand", "code": "TH", "dial_code": "+66"},
    {"name": "United Arab Emirates", "code": "AE", "dial_code": "+971"},
    {"name": "United Kingdom", "code": "GB", "dial_code": "+44"},
    {"name": "United States", "code": "US", "dial_code": "+1"},
    {"name": "Vietnam", "code": "VN", "dial_code": "+84"},
]

SECRET_KEY_LLM_API_KEY = "gen-lang-client-0276416660-5963432c99bb.json"
SECRET_PROJECT_NAME = "gen-lang-client-0276416660"
SECRET_BUCKET_NAME = "dev_tachi01"

MAIL_LAST_READ_DAYS_INITIAL = 30

LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,

    "formatters": {
        "verbose": {
            "format": "[{asctime}] {levelname} {name} {message}",
            "style": "{",
        },
    },

    "handlers": {
        "email_file": {
            "level": "INFO",
            "class": "logging.FileHandler",
            "filename": BASE_DIR / "logs/email.log",
            "formatter": "verbose",
        },
        "console": {
            "class": "logging.StreamHandler",
            "formatter": "verbose",
        },
    },

    "loggers": {
        "masters": {
            "handlers": ["email_file", "console"],
            "level": "INFO",
            "propagate": False,
        },

        "django.core.mail": {
            "handlers": ["email_file"],
            "level": "INFO",
            "propagate": False,
        },
    },
}

SKIPPING = [
    "matched",
    "Interested",
    "Additional Info"
]

CAREER = "https://career.itconnectus.com"

INTERVIEW = "https://ai-test.itconnectus.com"
