diff --git a/paw/settings.py b/paw/settings.py index 2e73a55..429a4a3 100644 --- a/paw/settings.py +++ b/paw/settings.py @@ -11,9 +11,12 @@ https://docs.djangoproject.com/en/5.0/ref/settings/ """ from pathlib import Path -from os import path +from dotenv import load_dotenv +from os import path, environ from django.utils.translation import gettext_lazy as _ +load_dotenv() + # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent @@ -22,13 +25,13 @@ BASE_DIR = Path(__file__).resolve().parent.parent # See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = "django-insecure-d738_hvwfer!9$!h#wk%ynp-z8d0tlk*-et7d)kl9lygm(*0bx" +SECRET_KEY = environ.get('SECRET_KEY', '') # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = [] - +DEBUG = environ.get('DEBUG').lower() == 'true' +ALLOWED_HOSTS = environ.get('ALLOWED_HOSTS', '').split(",") +CSRF_TRUSTED_ORIGINS = [ + f"https://{s}" for s in environ.get('ALLOWED_HOSTS', '').split(",")] # Application definition @@ -84,14 +87,24 @@ WSGI_APPLICATION = "paw.wsgi.application" # Database # https://docs.djangoproject.com/en/5.0/ref/settings/#databases - -DATABASES = { - "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": BASE_DIR / "db.sqlite3", +if DEBUG: + DATABASES = { + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": BASE_DIR / "db.sqlite3", + } + } +else: + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql', + 'NAME': environ['DATABASE_NAME'], + 'HOST': environ['DATABASE_HOST'], + 'PORT': int(environ['DATABASE_PORT']), + 'USER': environ['DATABASE_USER'], + 'PASSWORD': environ['DATABASE_PASSWORD'], + } } -} - # Password validation # https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators @@ -153,14 +166,23 @@ DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" LOGIN_REDIRECT_URL = "/tickets" LOGIN_URL = "/login" +# Email +if environ['MAIL_SERVER'] == "smtp": + EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' + EMAIL_FROM = environ['EMAIL_FROM'] + DEFAULT_FROM_EMAIL = environ['EMAIL_FROM'] + EMAIL_USE_TLS = True + EMAIL_HOST = environ['EMAIL_HOST'] + EMAIL_PORT = int(environ['EMAIL_PORT']) + EMAIL_HOST_USER = environ['EMAIL_HOST_USER'] + EMAIL_HOST_PASSWORD = environ['EMAIL_HOST_PASSWORD'] +else: + EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' + # Google SSO -GOOGLE_OAUTH_ENABLED = True -GOOGLE_OAUTH_CLIENT_ID = "" -GOOGLE_OAUTH_PROJECT_ID = "" -GOOGLE_OAUTH_CLIENT_SECRET = "" -GOOGLE_OAUTH_REDIRECT_URI = "http://localhost:8000/callback/google" -GOOGLE_OAUTH_SCOPES = [ - "openid", - "https://www.googleapis.com/auth/userinfo.profile", - "https://www.googleapis.com/auth/userinfo.email" -] +GOOGLE_OAUTH_ENABLED = environ.get('GOOGLE_OAUTH_ENABLED').lower() == 'true' +GOOGLE_OAUTH_CLIENT_ID = environ['GOOGLE_OAUTH_CLIENT_ID'] +GOOGLE_OAUTH_PROJECT_ID = environ['GOOGLE_OAUTH_PROJECT_ID'] +GOOGLE_OAUTH_CLIENT_SECRET = environ['GOOGLE_OAUTH_CLIENT_SECRET'] +GOOGLE_OAUTH_REDIRECT_URI = environ['GOOGLE_OAUTH_REDIRECT_URI'] +GOOGLE_OAUTH_SCOPES = environ.get('GOOGLE_OAUTH_SCOPES', '').split(",") diff --git a/poetry.lock b/poetry.lock index efcbf26..be12d83 100644 --- a/poetry.lock +++ b/poetry.lock @@ -347,6 +347,20 @@ files = [ [package.dependencies] pyasn1 = ">=0.4.6,<0.6.0" +[[package]] +name = "python-dotenv" +version = "1.0.1" +description = "Read key-value pairs from a .env file and set them as environment variables" +optional = false +python-versions = ">=3.8" +files = [ + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, +] + +[package.extras] +cli = ["click (>=5.0)"] + [[package]] name = "python-magic" version = "0.4.27" @@ -458,4 +472,4 @@ zstd = ["zstandard (>=0.18.0)"] [metadata] lock-version = "2.0" python-versions = "^3.12" -content-hash = "dba3b68991a716b8497c05f3b71bb7424d9ff208c18516ac6ac53319c9a43fcb" +content-hash = "9aa6714a85ad7a1ede2b4ea5ec7c0d733efd02e29d7008aaacc5cdf8a7fa6b20" diff --git a/pyproject.toml b/pyproject.toml index 3d640c3..609ad9c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "paw" -version = "0.1.0" +version = "0.2.0" description = "" authors = ["Alex Ottr "] license = "MIT" @@ -13,6 +13,7 @@ django-colorfield = "^0.11.0" google-auth = "^2.28.2" google-auth-oauthlib = "^1.2.0" python-magic = "^0.4.27" +python-dotenv = "^1.0.1" [build-system]