# Django settings for thrillwiki project. from pathlib import Path import os # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'django-insecure-=0)^0#h#k$0@$8$ys=^$0#h#k$0@$8$ys=^' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True CSRF_TRUSTED_ORIGINS = ['https://beta.thrillwiki.com'] ALLOWED_HOSTS = ['*'] #ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'thrillwiki.com', 'beta.thrillwiki.com', '192.168.86.6', 'syn.thewesker.com'] # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.sites', # Third-party apps 'allauth', 'allauth.account', 'allauth.socialaccount', 'allauth.socialaccount.providers.google', 'allauth.socialaccount.providers.discord', 'simple_history', 'django_cleanup', 'django_filters', 'django_htmx', 'whitenoise', 'django_tailwind_cli', 'cities_light', # Local apps 'core', 'accounts', 'companies', 'parks', 'rides', 'reviews', 'email_service', 'media', 'moderation', ] # Cities Light settings CITIES_LIGHT_TRANSLATION_LANGUAGES = ['en'] CITIES_LIGHT_INCLUDE_COUNTRIES = ['US', 'CA', 'GB', 'FR', 'DE', 'ES', 'IT', 'JP', 'CN', 'AU'] CITIES_LIGHT_INCLUDE_CITY_TYPES = ['PPL', 'PPLA', 'PPLA2', 'PPLA3', 'PPLA4', 'PPLC', 'PPLG', 'PPLL', 'PPLR', 'PPLS'] MIDDLEWARE = [ 'django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', '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', 'allauth.account.middleware.AccountMiddleware', 'django.middleware.cache.FetchFromCacheMiddleware', 'simple_history.middleware.HistoryRequestMiddleware', 'django_htmx.middleware.HtmxMiddleware', ] ROOT_URLCONF = 'thrillwiki.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'moderation.context_processors.moderation_access', # Added moderation context processor ], }, }, ] WSGI_APPLICATION = 'thrillwiki.wsgi.application' # Database DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'thrillwiki', 'USER': 'wiki', 'PASSWORD': 'thrillwiki', 'HOST': '192.168.86.3', 'PORT': '5432', } } # Cache settings CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 'LOCATION': 'unique-snowflake', 'TIMEOUT': 300, # 5 minutes 'OPTIONS': { 'MAX_ENTRIES': 1000 } } } CACHE_MIDDLEWARE_SECONDS = 1 # 5 minutes CACHE_MIDDLEWARE_KEY_PREFIX = 'thrillwiki' # Password validation 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 LANGUAGE_CODE = 'en-us' TIME_ZONE = 'America/New_York' USE_I18N = True USE_TZ = True # Static files (CSS, JavaScript, Images) STATIC_URL = 'static/' STATICFILES_DIRS = [BASE_DIR / "static"] STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') # Media files MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # Default primary key field type DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' # Authentication settings AUTHENTICATION_BACKENDS = [ 'django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend', ] # django-allauth settings SITE_ID = 1 ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_USERNAME_REQUIRED = True ACCOUNT_AUTHENTICATION_METHOD = 'username_email' ACCOUNT_EMAIL_VERIFICATION = 'optional' LOGIN_REDIRECT_URL = '/' ACCOUNT_LOGOUT_REDIRECT_URL = '/' # Custom adapters ACCOUNT_ADAPTER = 'accounts.adapters.CustomAccountAdapter' SOCIALACCOUNT_ADAPTER = 'accounts.adapters.CustomSocialAccountAdapter' # Social account settings SOCIALACCOUNT_PROVIDERS = { 'google': { 'APP': { 'client_id': '135166769591-nopcgmo0fkqfqfs9qe783a137mtmcrt2.apps.googleusercontent.com', 'secret': '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', 'key': '' }, 'SCOPE': [ 'profile', 'email', ], 'AUTH_PARAMS': {'access_type': 'online'}, }, 'discord': { 'APP': { 'client_id': '1299112802274902047', 'secret': 'ece7Pe_M4mD4mYzAgcINjTEKL_3ftL11', 'key': '' }, 'SCOPE': ['identify', 'email'], 'OAUTH_PKCE_ENABLED': True, } } # Additional social account settings SOCIALACCOUNT_LOGIN_ON_GET = True SOCIALACCOUNT_AUTO_SIGNUP = False SOCIALACCOUNT_STORE_TOKENS = True # Email settings EMAIL_BACKEND = 'email_service.backends.ForwardEmailBackend' FORWARD_EMAIL_BASE_URL = 'https://api.forwardemail.net' # Custom User Model AUTH_USER_MODEL = 'accounts.User' # Tailwind configuration TAILWIND_CLI_CONFIG_FILE = os.path.join(BASE_DIR, "tailwind.config.js") TAILWIND_CLI_SRC_CSS = os.path.join(BASE_DIR, "static/css/src/input.css") TAILWIND_CLI_DIST_CSS = os.path.join(BASE_DIR, "static/css/tailwind.css") # Cloudflare Turnstile settings TURNSTILE_SITE_KEY = '0x4AAAAAAAyqVp3RjccrC9Kz' TURNSTILE_SECRET_KEY = '0x4AAAAAAAyqVrQolYsrAFGJ39PXHJ_HQzY' TURNSTILE_VERIFY_URL = 'https://challenges.cloudflare.com/turnstile/v0/siteverify'