|
| 1 | + |
1 | 2 | """
|
2 | 3 | Django settings for zeno project.
|
3 | 4 |
|
|
9 | 10 | For the full list of settings and their values, see
|
10 | 11 | https://docs.djangoproject.com/en/5.2/ref/settings/
|
11 | 12 | """
|
12 |
| - |
| 13 | +import os |
13 | 14 | from pathlib import Path
|
| 15 | +from dotenv import load_dotenv |
14 | 16 |
|
15 |
| -# Build paths inside the project like this: BASE_DIR / 'subdir'. |
16 |
| -BASE_DIR = Path(__file__).resolve().parent.parent |
17 |
| - |
18 |
| - |
19 |
| -# Quick-start development settings - unsuitable for production |
20 |
| -# See https://docs.djangoproject.com/en/5.2/howto/deployment/checklist/ |
21 |
| - |
22 |
| -# SECURITY WARNING: keep the secret key used in production secret! |
23 |
| -SECRET_KEY = 'django-insecure-b3kb=syb8@z0tt)hu1is3g%ndv0c1pxwc!iy-*twyis9c&m7yl' |
| 17 | +load_dotenv() |
24 | 18 |
|
25 |
| -# SECURITY WARNING: don't run with debug turned on in production! |
26 |
| -DEBUG = True |
27 |
| - |
28 |
| -ALLOWED_HOSTS = [] |
| 19 | +BASE_DIR = Path(__file__).resolve().parent.parent |
29 | 20 |
|
| 21 | +def env_set(*names): |
| 22 | + return all(os.environ.get(name, "").strip() != "" for name in names) |
30 | 23 |
|
31 |
| -# Application definition |
| 24 | +DJANGO_SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY') |
| 25 | +SECRET_KEY = DJANGO_SECRET_KEY |
| 26 | +DEBUG = False |
| 27 | +ALLOWED_HOSTS = ["*"] |
32 | 28 |
|
33 | 29 | INSTALLED_APPS = [
|
34 | 30 | 'django.contrib.admin',
|
|
45 | 41 | 'conversations',
|
46 | 42 | 'runs',
|
47 | 43 | 'drf_yasg',
|
48 |
| - |
| 44 | + 'corsheaders', |
49 | 45 | ]
|
50 | 46 |
|
51 |
| - |
52 | 47 | MIDDLEWARE = [
|
| 48 | + 'corsheaders.middleware.CorsMiddleware', |
53 | 49 | 'django.middleware.security.SecurityMiddleware',
|
54 | 50 | 'django.contrib.sessions.middleware.SessionMiddleware',
|
55 | 51 | 'django.middleware.common.CommonMiddleware',
|
56 | 52 | 'django.middleware.csrf.CsrfViewMiddleware',
|
| 53 | + 'whitenoise.middleware.WhiteNoiseMiddleware', |
57 | 54 | 'django.contrib.auth.middleware.AuthenticationMiddleware',
|
58 | 55 | 'django.contrib.messages.middleware.MessageMiddleware',
|
59 | 56 | 'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
|
79 | 76 | WSGI_APPLICATION = 'zeno.wsgi.application'
|
80 | 77 |
|
81 | 78 |
|
82 |
| -# Database |
83 |
| -# https://docs.djangoproject.com/en/5.2/ref/settings/#databases |
84 |
| - |
85 |
| -DATABASES = { |
86 |
| - 'default': { |
87 |
| - 'ENGINE': 'django.db.backends.sqlite3', |
88 |
| - 'NAME': BASE_DIR / 'db.sqlite3', |
| 79 | +if env_set('PGDATABASE', 'PGUSER', 'PGPASSWORD', 'PGHOST'): |
| 80 | + DATABASES = { |
| 81 | + 'default': { |
| 82 | + 'ENGINE': 'django.db.backends.postgresql', |
| 83 | + 'NAME': os.environ['PGDATABASE'], |
| 84 | + 'USER': os.environ['PGUSER'], |
| 85 | + 'PASSWORD': os.environ['PGPASSWORD'], |
| 86 | + 'HOST': os.environ['PGHOST'], |
| 87 | + 'PORT': os.environ.get('PGPORT', '5432'), |
| 88 | + } |
| 89 | + } |
| 90 | +else: |
| 91 | + DATABASES = { |
| 92 | + 'default': { |
| 93 | + 'ENGINE': 'django.db.backends.sqlite3', |
| 94 | + 'NAME': BASE_DIR / 'db.sqlite3', |
| 95 | + } |
89 | 96 | }
|
90 |
| -} |
91 |
| - |
92 |
| - |
93 |
| -# Password validation |
94 |
| -# https://docs.djangoproject.com/en/5.2/ref/settings/#auth-password-validators |
95 | 97 |
|
96 | 98 | AUTH_PASSWORD_VALIDATORS = [
|
97 | 99 | {
|
|
108 | 110 | },
|
109 | 111 | ]
|
110 | 112 |
|
111 |
| - |
112 |
| -# Internationalization |
113 |
| -# https://docs.djangoproject.com/en/5.2/topics/i18n/ |
114 |
| - |
115 | 113 | LANGUAGE_CODE = 'en-us'
|
116 |
| - |
117 | 114 | TIME_ZONE = 'UTC'
|
118 |
| - |
119 | 115 | USE_I18N = True
|
120 |
| - |
121 | 116 | USE_TZ = True
|
122 | 117 |
|
| 118 | +STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') |
| 119 | +STATIC_URL = '/static/' |
123 | 120 |
|
124 |
| -# Static files (CSS, JavaScript, Images) |
125 |
| -# https://docs.djangoproject.com/en/5.2/howto/static-files/ |
126 |
| - |
127 |
| -STATIC_URL = 'static/' |
128 |
| - |
129 |
| -# Default primary key field type |
130 |
| -# https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field |
| 121 | +STATICFILES_DIRS = ( |
| 122 | + os.path.join(BASE_DIR, 'static'), |
| 123 | +) |
131 | 124 |
|
| 125 | +MEDIA_URL = "/media/" |
| 126 | +MEDIA_ROOT = os.path.join(BASE_DIR, 'media') |
132 | 127 | DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
133 | 128 |
|
134 |
| - |
135 | 129 | AUTH_USER_MODEL = "users.User"
|
136 | 130 |
|
137 | 131 | REST_FRAMEWORK = {
|
|
142 | 136 | 'rest_framework.permissions.IsAuthenticated',
|
143 | 137 | ],
|
144 | 138 | }
|
| 139 | +CORS_ORIGIN_ALLOW_ALL = True |
145 | 140 |
|
0 commit comments