Free and open source ticket system written in python
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

adjust env variables

+62 -25
+45 -23
paw/settings.py
··· 11 11 """ 12 12 13 13 from pathlib import Path 14 - from os import path 14 + from dotenv import load_dotenv 15 + from os import path, environ 15 16 from django.utils.translation import gettext_lazy as _ 17 + 18 + load_dotenv() 16 19 17 20 # Build paths inside the project like this: BASE_DIR / 'subdir'. 18 21 BASE_DIR = Path(__file__).resolve().parent.parent ··· 22 25 # See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/ 23 26 24 27 # SECURITY WARNING: keep the secret key used in production secret! 25 - SECRET_KEY = "django-insecure-d738_hvwfer!9$!h#wk%ynp-z8d0tlk*-et7d)kl9lygm(*0bx" 28 + SECRET_KEY = environ.get('SECRET_KEY', '') 26 29 27 30 # SECURITY WARNING: don't run with debug turned on in production! 28 - DEBUG = True 29 - 30 - ALLOWED_HOSTS = [] 31 - 31 + DEBUG = environ.get('DEBUG').lower() == 'true' 32 + ALLOWED_HOSTS = environ.get('ALLOWED_HOSTS', '').split(",") 33 + CSRF_TRUSTED_ORIGINS = [ 34 + f"https://{s}" for s in environ.get('ALLOWED_HOSTS', '').split(",")] 32 35 33 36 # Application definition 34 37 ··· 84 87 85 88 # Database 86 89 # https://docs.djangoproject.com/en/5.0/ref/settings/#databases 87 - 88 - DATABASES = { 89 - "default": { 90 - "ENGINE": "django.db.backends.sqlite3", 91 - "NAME": BASE_DIR / "db.sqlite3", 90 + if DEBUG: 91 + DATABASES = { 92 + "default": { 93 + "ENGINE": "django.db.backends.sqlite3", 94 + "NAME": BASE_DIR / "db.sqlite3", 95 + } 92 96 } 93 - } 94 - 97 + else: 98 + DATABASES = { 99 + 'default': { 100 + 'ENGINE': 'django.db.backends.postgresql', 101 + 'NAME': environ['DATABASE_NAME'], 102 + 'HOST': environ['DATABASE_HOST'], 103 + 'PORT': int(environ['DATABASE_PORT']), 104 + 'USER': environ['DATABASE_USER'], 105 + 'PASSWORD': environ['DATABASE_PASSWORD'], 106 + } 107 + } 95 108 96 109 # Password validation 97 110 # https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators ··· 153 166 LOGIN_REDIRECT_URL = "/tickets" 154 167 LOGIN_URL = "/login" 155 168 169 + # Email 170 + if environ['MAIL_SERVER'] == "smtp": 171 + EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 172 + EMAIL_FROM = environ['EMAIL_FROM'] 173 + DEFAULT_FROM_EMAIL = environ['EMAIL_FROM'] 174 + EMAIL_USE_TLS = True 175 + EMAIL_HOST = environ['EMAIL_HOST'] 176 + EMAIL_PORT = int(environ['EMAIL_PORT']) 177 + EMAIL_HOST_USER = environ['EMAIL_HOST_USER'] 178 + EMAIL_HOST_PASSWORD = environ['EMAIL_HOST_PASSWORD'] 179 + else: 180 + EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' 181 + 156 182 # Google SSO 157 - GOOGLE_OAUTH_ENABLED = True 158 - GOOGLE_OAUTH_CLIENT_ID = "" 159 - GOOGLE_OAUTH_PROJECT_ID = "" 160 - GOOGLE_OAUTH_CLIENT_SECRET = "" 161 - GOOGLE_OAUTH_REDIRECT_URI = "http://localhost:8000/callback/google" 162 - GOOGLE_OAUTH_SCOPES = [ 163 - "openid", 164 - "https://www.googleapis.com/auth/userinfo.profile", 165 - "https://www.googleapis.com/auth/userinfo.email" 166 - ] 183 + GOOGLE_OAUTH_ENABLED = environ.get('GOOGLE_OAUTH_ENABLED').lower() == 'true' 184 + GOOGLE_OAUTH_CLIENT_ID = environ['GOOGLE_OAUTH_CLIENT_ID'] 185 + GOOGLE_OAUTH_PROJECT_ID = environ['GOOGLE_OAUTH_PROJECT_ID'] 186 + GOOGLE_OAUTH_CLIENT_SECRET = environ['GOOGLE_OAUTH_CLIENT_SECRET'] 187 + GOOGLE_OAUTH_REDIRECT_URI = environ['GOOGLE_OAUTH_REDIRECT_URI'] 188 + GOOGLE_OAUTH_SCOPES = environ.get('GOOGLE_OAUTH_SCOPES', '').split(",")
+15 -1
poetry.lock
··· 348 348 pyasn1 = ">=0.4.6,<0.6.0" 349 349 350 350 [[package]] 351 + name = "python-dotenv" 352 + version = "1.0.1" 353 + description = "Read key-value pairs from a .env file and set them as environment variables" 354 + optional = false 355 + python-versions = ">=3.8" 356 + files = [ 357 + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, 358 + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, 359 + ] 360 + 361 + [package.extras] 362 + cli = ["click (>=5.0)"] 363 + 364 + [[package]] 351 365 name = "python-magic" 352 366 version = "0.4.27" 353 367 description = "File type identification using libmagic" ··· 458 472 [metadata] 459 473 lock-version = "2.0" 460 474 python-versions = "^3.12" 461 - content-hash = "dba3b68991a716b8497c05f3b71bb7424d9ff208c18516ac6ac53319c9a43fcb" 475 + content-hash = "9aa6714a85ad7a1ede2b4ea5ec7c0d733efd02e29d7008aaacc5cdf8a7fa6b20"
+2 -1
pyproject.toml
··· 1 1 [tool.poetry] 2 2 name = "paw" 3 - version = "0.1.0" 3 + version = "0.2.0" 4 4 description = "" 5 5 authors = ["Alex Ottr <alex@otter.foo>"] 6 6 license = "MIT" ··· 13 13 google-auth = "^2.28.2" 14 14 google-auth-oauthlib = "^1.2.0" 15 15 python-magic = "^0.4.27" 16 + python-dotenv = "^1.0.1" 16 17 17 18 18 19 [build-system]