from pathlib import Path import environ import os env = environ.Env( DEBUG=(bool, False) ) # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent # Take environment variables from .env file environ.Env.read_env(os.path.join(BASE_DIR, '.env')) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/dev/howto/deployment/checklist/ # https://docs.djangoproject.com/en/dev/ref/settings/#secret-key # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = "django-insecure-0peo@#x9jur3!h$ryje!$879xww8y1y66jx!%*#ymhg&jkozs2" # Resend API Key RESEND_API_KEY = "re_BBXJWctP_8gb4iNpfaHuau7Na95mc3feu" # https://docs.djangoproject.com/en/dev/ref/settings/#debug # SECURITY WARNING: don't run with debug turned on in production! DEBUG = env('DEBUG') # https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts ALLOWED_HOSTS = ["localhost", "0.0.0.0", "127.0.0.1", "pkmntrade-club.fly.dev", "pkmntrade.club"] CSRF_TRUSTED_ORIGINS = ["https://pkmntrade-club.fly.dev", "https://pkmntrade.club"] # Application definition # https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps INSTALLED_APPS = [ "django_daisy", "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "whitenoise.runserver_nostatic", "django.contrib.staticfiles", "django.contrib.sites", "allauth", "allauth.account", 'allauth.socialaccount.providers.google', "crispy_forms", "crispy_tailwind", #"debug_toolbar", "el_pagination", "tailwind", "theme", #"django_browser_reload", "accounts", "cards", "home", "trades.apps.TradesConfig", "meta", #"silk", ] SILKY_PYTHON_PROFILER = True SILKY_AUTHENTICATION = True SILKY_AUTHORISATION = True SILKY_PERMISSIONS = lambda user: user.is_superuser SILKY_META = True TAILWIND_APP_NAME = 'theme' META_SITE_NAME = 'PKMN Trade Club' META_SITE_PROTOCOL = 'https' META_USE_SITES = True META_IMAGE_URL = 'https://pkmntrade.club/' # https://docs.djangoproject.com/en/dev/ref/settings/#middleware MIDDLEWARE = [ "django.middleware.security.SecurityMiddleware", "whitenoise.middleware.WhiteNoiseMiddleware", # WhiteNoise "django.contrib.sessions.middleware.SessionMiddleware", "django.middleware.common.CommonMiddleware", #"debug_toolbar.middleware.DebugToolbarMiddleware", # Django Debug Toolbar "django.middleware.csrf.CsrfViewMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware", "django.contrib.messages.middleware.MessageMiddleware", "django.middleware.clickjacking.XFrameOptionsMiddleware", "allauth.account.middleware.AccountMiddleware", # django-allauth #'silk.middleware.SilkyMiddleware', #"django_browser_reload.middleware.BrowserReloadMiddleware", #"django_project.middleware.AutoLoginMiddleware", ] DAISY_SETTINGS = { 'SITE_TITLE': 'PKMN Trade Club Admin', 'DONT_SUPPORT_ME': True, } # https://docs.djangoproject.com/en/dev/ref/settings/#root-urlconf ROOT_URLCONF = "django_project.urls" # https://docs.djangoproject.com/en/dev/ref/settings/#wsgi-application WSGI_APPLICATION = "django_project.wsgi.application" # https://docs.djangoproject.com/en/dev/ref/settings/#templates TEMPLATES = [ { "BACKEND": "django.template.backends.django.DjangoTemplates", "DIRS": [BASE_DIR / "theme/templates", BASE_DIR / "theme"], "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", ], }, }, ] # https://docs.djangoproject.com/en/dev/ref/settings/#databases DATABASES = { 'default': env.db(), } # Password validation # https://docs.djangoproject.com/en/dev/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/dev/topics/i18n/ # https://docs.djangoproject.com/en/dev/ref/settings/#language-code LANGUAGE_CODE = "en-us" # https://docs.djangoproject.com/en/dev/ref/settings/#time-zone TIME_ZONE = "UTC" # https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-USE_I18N USE_I18N = True # https://docs.djangoproject.com/en/dev/ref/settings/#use-tz USE_TZ = True # https://docs.djangoproject.com/en/dev/ref/settings/#locale-paths LOCALE_PATHS = [BASE_DIR / 'locale'] # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/5.0/howto/static-files/ # https://docs.djangoproject.com/en/dev/ref/settings/#static-root STATIC_ROOT = BASE_DIR / "staticfiles" # https://docs.djangoproject.com/en/dev/ref/settings/#static-url STATIC_URL = "/static/" # https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_DIRS STATICFILES_DIRS = [BASE_DIR / "static"] # https://whitenoise.readthedocs.io/en/latest/django.html STORAGES = { "default": { "BACKEND": "django.core.files.storage.FileSystemStorage", }, "staticfiles": { "BACKEND": "whitenoise.storage.CompressedStaticFilesStorage", }, } # Default primary key field type # https://docs.djangoproject.com/en/stable/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' # django-crispy-forms # https://django-crispy-forms.readthedocs.io/en/latest/install.html#template-packs CRISPY_ALLOWED_TEMPLATE_PACKS = 'tailwind' CRISPY_TEMPLATE_PACK = "tailwind" # https://docs.djangoproject.com/en/dev/ref/settings/#email-backend EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" EMAIL_HOST = "smtp.resend.com" EMAIL_PORT = 587 EMAIL_HOST_USER = "resend" EMAIL_HOST_PASSWORD = RESEND_API_KEY EMAIL_USE_TLS = True # https://docs.djangoproject.com/en/dev/ref/settings/#default-from-email DEFAULT_FROM_EMAIL = "noreply@pkmntrade.club" # django-debug-toolbar # https://django-debug-toolbar.readthedocs.io/en/latest/installation.html # https://docs.djangoproject.com/en/dev/ref/settings/#internal-ips INTERNAL_IPS = [ "127.0.0.1", ] import socket hostname, _, ips = socket.gethostbyname_ex(socket.gethostname()) INTERNAL_IPS.append([ip[:-1] + "1" for ip in ips]) # https://docs.djangoproject.com/en/dev/topics/auth/customizing/#substituting-a-custom-user-model AUTH_USER_MODEL = "accounts.CustomUser" # django-allauth config # https://docs.djangoproject.com/en/dev/ref/settings/#site-id SITE_ID = 1 # https://docs.djangoproject.com/en/dev/ref/settings/#login-redirect-url LOGIN_REDIRECT_URL = "home" # https://django-allauth.readthedocs.io/en/latest/views.html#logout-account-logout ACCOUNT_LOGOUT_REDIRECT_URL = "home" # https://django-allauth.readthedocs.io/en/latest/installation.html?highlight=backends AUTHENTICATION_BACKENDS = ( "django.contrib.auth.backends.ModelBackend", "allauth.account.auth_backends.AuthenticationBackend", ) # https://django-allauth.readthedocs.io/en/latest/configuration.html ACCOUNT_SESSION_REMEMBER = True ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE = True ACCOUNT_AUTHENTICATION_METHOD = "username_email" ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_EMAIL_VERIFICATION = env('ACCOUNT_EMAIL_VERIFICATION') ACCOUNT_EMAIL_NOTIFICATIONS = True ACCOUNT_DEFAULT_HTTP_PROTOCOL = "https" ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = True ACCOUNT_USERNAME_MIN_LENGTH = 3 ACCOUNT_CHANGE_EMAIL = True ACCOUNT_UNIQUE_EMAIL = True ACCOUNT_LOGIN_BY_CODE_ENABLED = True ACCOUNT_SIGNUP_FORM_HONEYPOT_FIELD = "signature" ACCOUNT_USERNAME_REQUIRED = True ACCOUNT_FORMS = { "signup": "accounts.forms.CustomUserCreationForm", } SOCIALACCOUNT_EMAIL_AUTHENTICATION = True SOCIALACCOUNT_EMAIL_AUTHENTICATION_AUTO_CONNECT = True SOCIALACCOUNT_ONLY = False # SOCIALACCOUNT_PROVIDERS = { # "google": { # # For each OAuth based provider, either add a ``SocialApp`` # # (``socialaccount`` app) containing the required client # # credentials, or list them here: # "APPS": [ # { # "client_id": "123", # "secret": "456", # "key": "" # }, # ], # # These are provider-specific settings that can only be # # listed here: # "SCOPE": [ # "profile", # "email", # ], # "AUTH_PARAMS": { # "access_type": "offline", # }, # }, # "openid_connect": { # # Optional PKCE defaults to False, but may be required by your provider # # Applies to all APPS. # "OAUTH_PKCE_ENABLED": True, # "APPS": [ # { # "provider_id": "nintendo", # "name": "Nintendo Account", # "client_id": "your.service.id", # "secret": "your.service.secret", # "settings": { # "server_url": "https://my.server.example.com", # # Optional token endpoint authentication method. # # May be one of "client_secret_basic", "client_secret_post" # # If omitted, a method from the the server's # # token auth methods list is used # "token_auth_method": "client_secret_basic", # }, # }, # ] # } # } if DEBUG: CACHES = { "default": { "BACKEND": "django.core.cache.backends.dummy.DummyCache", } } else: CACHES = { "default": { "BACKEND": "django.core.cache.backends.db.DatabaseCache", "LOCATION": "django_cache", } }