|
29 | 29 |
|
30 | 30 | # Fetching the value from the environment and splitting to list if necessary. |
31 | 31 | # Fallback to '*' if the environment variable is not set. |
32 | | -ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS", "*").split() |
| 32 | +ALLOWED_HOSTS = os.environ.get('DJANGO_ALLOWED_HOSTS', '*').split() |
33 | 33 |
|
34 | 34 | # If the environment variable contains '*', the split method would create a list with an empty string. |
35 | 35 | # So you need to check for this case and adjust accordingly. |
36 | | -if ALLOWED_HOSTS == ["*"] or ALLOWED_HOSTS == [""]: |
37 | | - ALLOWED_HOSTS = ["*"] |
| 36 | +if ALLOWED_HOSTS == ['*'] or ALLOWED_HOSTS == ['']: |
| 37 | + ALLOWED_HOSTS = ['*'] |
38 | 38 |
|
39 | 39 |
|
40 | 40 | # Application definition |
41 | 41 |
|
42 | 42 | INSTALLED_APPS = [ |
43 | | - "django.contrib.admin", |
44 | | - "django.contrib.auth", |
45 | | - "django.contrib.contenttypes", |
46 | | - "django.contrib.sessions", |
47 | | - "django.contrib.messages", |
48 | | - "django.contrib.staticfiles", |
49 | | - "balancer_backend", |
50 | | - "api", |
51 | | - "corsheaders", |
52 | | - "rest_framework", |
53 | | - "djoser", |
| 43 | + 'django.contrib.admin', |
| 44 | + 'django.contrib.auth', |
| 45 | + 'django.contrib.contenttypes', |
| 46 | + 'django.contrib.sessions', |
| 47 | + 'django.contrib.messages', |
| 48 | + 'django.contrib.staticfiles', |
| 49 | + 'balancer_backend', |
| 50 | + 'api', |
| 51 | + 'corsheaders', |
| 52 | + 'rest_framework', |
| 53 | + 'djoser', |
54 | 54 | ] |
55 | 55 |
|
56 | 56 | MIDDLEWARE = [ |
57 | | - "django.middleware.security.SecurityMiddleware", |
58 | | - "django.contrib.sessions.middleware.SessionMiddleware", |
59 | | - "django.middleware.common.CommonMiddleware", |
60 | | - "django.middleware.csrf.CsrfViewMiddleware", |
61 | | - "django.contrib.auth.middleware.AuthenticationMiddleware", |
62 | | - "django.contrib.messages.middleware.MessageMiddleware", |
63 | | - "django.middleware.clickjacking.XFrameOptionsMiddleware", |
64 | | - "corsheaders.middleware.CorsMiddleware", |
| 57 | + 'django.middleware.security.SecurityMiddleware', |
| 58 | + 'django.contrib.sessions.middleware.SessionMiddleware', |
| 59 | + 'django.middleware.common.CommonMiddleware', |
| 60 | + 'django.middleware.csrf.CsrfViewMiddleware', |
| 61 | + 'django.contrib.auth.middleware.AuthenticationMiddleware', |
| 62 | + 'django.contrib.messages.middleware.MessageMiddleware', |
| 63 | + 'django.middleware.clickjacking.XFrameOptionsMiddleware', |
| 64 | + 'corsheaders.middleware.CorsMiddleware', |
| 65 | + |
65 | 66 | ] |
66 | 67 |
|
67 | | -ROOT_URLCONF = "balancer_backend.urls" |
| 68 | +ROOT_URLCONF = 'balancer_backend.urls' |
68 | 69 |
|
69 | 70 | CORS_ALLOW_ALL_ORIGINS = True |
70 | 71 |
|
71 | 72 | TEMPLATES = [ |
72 | 73 | { |
73 | | - "BACKEND": "django.template.backends.django.DjangoTemplates", |
74 | | - "DIRS": [os.path.join(BASE_DIR, "build")], |
75 | | - "APP_DIRS": True, |
76 | | - "OPTIONS": { |
77 | | - "context_processors": [ |
78 | | - "django.template.context_processors.debug", |
79 | | - "django.template.context_processors.request", |
80 | | - "django.contrib.auth.context_processors.auth", |
81 | | - "django.contrib.messages.context_processors.messages", |
| 74 | + 'BACKEND': 'django.template.backends.django.DjangoTemplates', |
| 75 | + 'DIRS': [os.path.join(BASE_DIR, 'build')], |
| 76 | + 'APP_DIRS': True, |
| 77 | + 'OPTIONS': { |
| 78 | + 'context_processors': [ |
| 79 | + 'django.template.context_processors.debug', |
| 80 | + 'django.template.context_processors.request', |
| 81 | + 'django.contrib.auth.context_processors.auth', |
| 82 | + 'django.contrib.messages.context_processors.messages', |
82 | 83 | ], |
83 | 84 | }, |
84 | 85 | }, |
|
88 | 89 | # Change this to your desired URL |
89 | 90 | LOGIN_REDIRECT_URL = os.environ.get("LOGIN_REDIRECT_URL") |
90 | 91 |
|
91 | | -WSGI_APPLICATION = "balancer_backend.wsgi.application" |
| 92 | +WSGI_APPLICATION = 'balancer_backend.wsgi.application' |
92 | 93 |
|
93 | 94 |
|
94 | 95 | # Database |
|
105 | 106 | } |
106 | 107 | } |
107 | 108 |
|
108 | | -EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" |
109 | | -EMAIL_HOST = "smtp.gmail.com" |
| 109 | +EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' |
| 110 | +EMAIL_HOST = 'smtp.gmail.com' |
110 | 111 | EMAIL_PORT = 587 |
111 | 112 | EMAIL_HOST_USER = os.environ.get("EMAIL_HOST_USER", "") |
112 | 113 | EMAIL_HOST_PASSWORD = os.environ.get("EMAIL_HOST_PASSWORD", "") |
|
118 | 119 |
|
119 | 120 | AUTH_PASSWORD_VALIDATORS = [ |
120 | 121 | { |
121 | | - "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", |
| 122 | + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', |
122 | 123 | }, |
123 | 124 | { |
124 | | - "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", |
| 125 | + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', |
125 | 126 | }, |
126 | 127 | { |
127 | | - "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", |
| 128 | + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', |
128 | 129 | }, |
129 | 130 | { |
130 | | - "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", |
| 131 | + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', |
131 | 132 | }, |
132 | 133 | ] |
133 | 134 |
|
134 | 135 | # Internationalization |
135 | 136 | # https://docs.djangoproject.com/en/4.2/topics/i18n/ |
136 | 137 |
|
137 | | -LANGUAGE_CODE = "en-us" |
| 138 | +LANGUAGE_CODE = 'en-us' |
138 | 139 |
|
139 | | -TIME_ZONE = "UTC" |
| 140 | +TIME_ZONE = 'UTC' |
140 | 141 |
|
141 | 142 | USE_I18N = True |
142 | 143 |
|
|
146 | 147 | # Static files (CSS, JavaScript, Images) |
147 | 148 | # https://docs.djangoproject.com/en/4.2/howto/static-files/ |
148 | 149 |
|
149 | | -STATIC_URL = "/static/" |
| 150 | +STATIC_URL = '/static/' |
150 | 151 | STATICFILES_DIRS = [ |
151 | | - os.path.join(BASE_DIR, "build/static"), |
| 152 | + os.path.join(BASE_DIR, 'build/static'), |
152 | 153 | ] |
153 | | -STATIC_ROOT = os.path.join(BASE_DIR, "static") |
| 154 | +STATIC_ROOT = os.path.join(BASE_DIR, 'static') |
154 | 155 |
|
155 | 156 | AUTHENTICATION_BACKENDS = [ |
156 | | - "django.contrib.auth.backends.ModelBackend", |
| 157 | + 'django.contrib.auth.backends.ModelBackend', |
157 | 158 | ] |
158 | 159 |
|
159 | 160 |
|
160 | 161 | REST_FRAMEWORK = { |
161 | | - "DEFAULT_PERMISSION_CLASSES": ["rest_framework.permissions.IsAuthenticated"], |
162 | | - "DEFAULT_AUTHENTICATION_CLASSES": ( |
163 | | - "rest_framework_simplejwt.authentication.JWTAuthentication", |
| 162 | + 'DEFAULT_PERMISSION_CLASSES': [ |
| 163 | + 'rest_framework.permissions.IsAuthenticated' |
| 164 | + ], |
| 165 | + 'DEFAULT_AUTHENTICATION_CLASSES': ( |
| 166 | + 'rest_framework_simplejwt.authentication.JWTAuthentication', |
164 | 167 | ), |
165 | 168 | } |
166 | 169 |
|
167 | 170 |
|
168 | 171 | SIMPLE_JWT = { |
169 | | - "AUTH_HEADER_TYPES": ("JWT",), |
170 | | - "ACCESS_TOKEN_LIFETIME": timedelta(minutes=60), |
171 | | - "REFRESH_TOKEN_LIFETIME": timedelta(days=1), |
172 | | - "TOKEN_OBTAIN_SERIALIZER": "api.models.TokenObtainPairSerializer.MyTokenObtainPairSerializer", |
173 | | - "AUTH_TOKEN_CLASSES": ("rest_framework_simplejwt.tokens.AccessToken",), |
| 172 | + 'AUTH_HEADER_TYPES': ('JWT',), |
| 173 | + 'ACCESS_TOKEN_LIFETIME': timedelta(minutes=60), |
| 174 | + 'REFRESH_TOKEN_LIFETIME': timedelta(days=1), |
| 175 | + 'TOKEN_OBTAIN_SERIALIZER': 'api.models.TokenObtainPairSerializer.MyTokenObtainPairSerializer', |
| 176 | + 'AUTH_TOKEN_CLASSES': ( |
| 177 | + 'rest_framework_simplejwt.tokens.AccessToken', |
| 178 | + ) |
174 | 179 | } |
175 | 180 |
|
176 | 181 | DJOSER = { |
177 | | - "LOGIN_FIELD": "email", |
178 | | - "USER_CREATE_PASSWORD_RETYPE": True, |
179 | | - "USERNAME_CHANGED_EMAIL_CONFIRMATION": True, |
180 | | - "PASSWORD_CHANGED_EMAIL_CONFIRMATION": True, |
181 | | - "SEND_CONFIRMATION_EMAIL": True, |
182 | | - "SET_USERNAME_RETYPE": True, |
183 | | - "SET_PASSWORD_RETYPE": True, |
184 | | - "PASSWORD_RESET_CONFIRM_URL": "password/reset/confirm/{uid}/{token}", |
185 | | - "USERNAME_RESET_CONFIRM_URL": "email/reset/confirm/{uid}/{token}", |
186 | | - "ACTIVATION_URL": "activate/{uid}/{token}", |
187 | | - "SEND_ACTIVATION_EMAIL": True, |
188 | | - "SOCIAL_AUTH_TOKEN_STRATEGY": "djoser.social.token.jwt.TokenStrategy", |
189 | | - "SOCIAL_AUTH_ALLOWED_REDIRECT_URIS": [ |
190 | | - "http://localhost:8000/google", |
191 | | - "http://localhost:8000/facebook", |
192 | | - ], |
193 | | - "SERIALIZERS": { |
194 | | - "user_create": "api.models.serializers.UserCreateSerializer", |
195 | | - "user": "api.models.serializers.UserCreateSerializer", |
196 | | - "current_user": "api.models.serializers.UserCreateSerializer", |
197 | | - "user_delete": "djoser.serializers.UserDeleteSerializer", |
198 | | - }, |
| 182 | + 'LOGIN_FIELD': 'email', |
| 183 | + 'USER_CREATE_PASSWORD_RETYPE': True, |
| 184 | + 'USERNAME_CHANGED_EMAIL_CONFIRMATION': True, |
| 185 | + 'PASSWORD_CHANGED_EMAIL_CONFIRMATION': True, |
| 186 | + 'SEND_CONFIRMATION_EMAIL': True, |
| 187 | + 'SET_USERNAME_RETYPE': True, |
| 188 | + 'SET_PASSWORD_RETYPE': True, |
| 189 | + 'PASSWORD_RESET_CONFIRM_URL': 'password/reset/confirm/{uid}/{token}', |
| 190 | + 'USERNAME_RESET_CONFIRM_URL': 'email/reset/confirm/{uid}/{token}', |
| 191 | + 'ACTIVATION_URL': 'activate/{uid}/{token}', |
| 192 | + 'SEND_ACTIVATION_EMAIL': True, |
| 193 | + 'SOCIAL_AUTH_TOKEN_STRATEGY': 'djoser.social.token.jwt.TokenStrategy', |
| 194 | + 'SOCIAL_AUTH_ALLOWED_REDIRECT_URIS': ['http://localhost:8000/google', 'http://localhost:8000/facebook'], |
| 195 | + 'SERIALIZERS': { |
| 196 | + 'user_create': 'api.models.serializers.UserCreateSerializer', |
| 197 | + 'user': 'api.models.serializers.UserCreateSerializer', |
| 198 | + 'current_user': 'api.models.serializers.UserCreateSerializer', |
| 199 | + 'user_delete': 'djoser.serializers.UserDeleteSerializer', |
| 200 | + } |
199 | 201 | } |
200 | 202 |
|
201 | 203 |
|
202 | 204 | # Default primary key field type |
203 | 205 | # https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field |
204 | 206 |
|
205 | | -DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" |
| 207 | +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' |
206 | 208 |
|
207 | 209 |
|
208 | | -AUTH_USER_MODEL = "api.UserAccount" |
| 210 | +AUTH_USER_MODEL = 'api.UserAccount' |
209 | 211 |
|
210 | 212 | # Logging configuration |
211 | | -LOGGING = { |
212 | | - "version": 1, |
213 | | - "disable_existing_loggers": False, |
214 | | - "formatters": { |
215 | | - "verbose": { |
216 | | - "format": "{levelname} {asctime} {module} {process:d} {thread:d} {message}", |
217 | | - "style": "{", |
218 | | - }, |
219 | | - "simple": { |
220 | | - "format": "{levelname} {message}", |
221 | | - "style": "{", |
222 | | - }, |
223 | | - }, |
224 | | - "handlers": { |
225 | | - "console": { |
226 | | - "class": "logging.StreamHandler", |
227 | | - "formatter": "verbose", |
228 | | - }, |
229 | | - }, |
230 | | - "root": { |
231 | | - "handlers": ["console"], |
232 | | - "level": "INFO", |
233 | | - }, |
234 | | -} |
| 213 | +# LOGGING = { |
| 214 | +# "version": 1, |
| 215 | +# "disable_existing_loggers": False, |
| 216 | +# "formatters": { |
| 217 | +# "verbose": { |
| 218 | +# "format": "{levelname} {asctime} {module} {process:d} {thread:d} {message}", |
| 219 | +# "style": "{", |
| 220 | +# }, |
| 221 | +# "simple": { |
| 222 | +# "format": "{levelname} {message}", |
| 223 | +# "style": "{", |
| 224 | +# }, |
| 225 | +# }, |
| 226 | +# "handlers": { |
| 227 | +# "console": { |
| 228 | +# "class": "logging.StreamHandler", |
| 229 | +# "formatter": "verbose", |
| 230 | +# }, |
| 231 | +# }, |
| 232 | +# "root": { |
| 233 | +# "handlers": ["console"], |
| 234 | +# "level": "INFO", |
| 235 | +# }, |
| 236 | +# } |
0 commit comments