|
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', |
65 | | - |
| 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", |
66 | 65 | ] |
67 | 66 |
|
68 | | -ROOT_URLCONF = 'balancer_backend.urls' |
| 67 | +ROOT_URLCONF = "balancer_backend.urls" |
69 | 68 |
|
70 | 69 | CORS_ALLOW_ALL_ORIGINS = True |
71 | 70 |
|
72 | 71 | TEMPLATES = [ |
73 | 72 | { |
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', |
| 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", |
83 | 82 | ], |
84 | 83 | }, |
85 | 84 | }, |
|
89 | 88 | # Change this to your desired URL |
90 | 89 | LOGIN_REDIRECT_URL = os.environ.get("LOGIN_REDIRECT_URL") |
91 | 90 |
|
92 | | -WSGI_APPLICATION = 'balancer_backend.wsgi.application' |
| 91 | +WSGI_APPLICATION = "balancer_backend.wsgi.application" |
93 | 92 |
|
94 | 93 |
|
95 | 94 | # Database |
|
106 | 105 | } |
107 | 106 | } |
108 | 107 |
|
109 | | -EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' |
110 | | -EMAIL_HOST = 'smtp.gmail.com' |
| 108 | +EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" |
| 109 | +EMAIL_HOST = "smtp.gmail.com" |
111 | 110 | EMAIL_PORT = 587 |
112 | 111 | EMAIL_HOST_USER = os.environ.get("EMAIL_HOST_USER", "") |
113 | 112 | EMAIL_HOST_PASSWORD = os.environ.get("EMAIL_HOST_PASSWORD", "") |
|
119 | 118 |
|
120 | 119 | AUTH_PASSWORD_VALIDATORS = [ |
121 | 120 | { |
122 | | - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', |
| 121 | + "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", |
123 | 122 | }, |
124 | 123 | { |
125 | | - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', |
| 124 | + "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", |
126 | 125 | }, |
127 | 126 | { |
128 | | - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', |
| 127 | + "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", |
129 | 128 | }, |
130 | 129 | { |
131 | | - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', |
| 130 | + "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", |
132 | 131 | }, |
133 | 132 | ] |
134 | 133 |
|
135 | 134 | # Internationalization |
136 | 135 | # https://docs.djangoproject.com/en/4.2/topics/i18n/ |
137 | 136 |
|
138 | | -LANGUAGE_CODE = 'en-us' |
| 137 | +LANGUAGE_CODE = "en-us" |
139 | 138 |
|
140 | | -TIME_ZONE = 'UTC' |
| 139 | +TIME_ZONE = "UTC" |
141 | 140 |
|
142 | 141 | USE_I18N = True |
143 | 142 |
|
|
147 | 146 | # Static files (CSS, JavaScript, Images) |
148 | 147 | # https://docs.djangoproject.com/en/4.2/howto/static-files/ |
149 | 148 |
|
150 | | -STATIC_URL = '/static/' |
| 149 | +STATIC_URL = "/static/" |
151 | 150 | STATICFILES_DIRS = [ |
152 | | - os.path.join(BASE_DIR, 'build/static'), |
| 151 | + os.path.join(BASE_DIR, "build/static"), |
153 | 152 | ] |
154 | | -STATIC_ROOT = os.path.join(BASE_DIR, 'static') |
| 153 | +STATIC_ROOT = os.path.join(BASE_DIR, "static") |
155 | 154 |
|
156 | 155 | AUTHENTICATION_BACKENDS = [ |
157 | | - 'django.contrib.auth.backends.ModelBackend', |
| 156 | + "django.contrib.auth.backends.ModelBackend", |
158 | 157 | ] |
159 | 158 |
|
160 | 159 |
|
161 | 160 | REST_FRAMEWORK = { |
162 | | - 'DEFAULT_PERMISSION_CLASSES': [ |
163 | | - 'rest_framework.permissions.IsAuthenticated' |
164 | | - ], |
165 | | - 'DEFAULT_AUTHENTICATION_CLASSES': ( |
166 | | - 'rest_framework_simplejwt.authentication.JWTAuthentication', |
| 161 | + "DEFAULT_PERMISSION_CLASSES": ["rest_framework.permissions.IsAuthenticated"], |
| 162 | + "DEFAULT_AUTHENTICATION_CLASSES": ( |
| 163 | + "rest_framework_simplejwt.authentication.JWTAuthentication", |
167 | 164 | ), |
168 | 165 | } |
169 | 166 |
|
170 | 167 |
|
171 | 168 | SIMPLE_JWT = { |
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 | | - ) |
| 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",), |
179 | 174 | } |
180 | 175 |
|
181 | 176 | DJOSER = { |
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 | | - } |
| 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 | + }, |
201 | 199 | } |
202 | 200 |
|
203 | 201 |
|
204 | 202 | # Default primary key field type |
205 | 203 | # https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field |
206 | 204 |
|
207 | | -DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' |
| 205 | +DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" |
208 | 206 |
|
209 | 207 |
|
210 | | -AUTH_USER_MODEL = 'api.UserAccount' |
| 208 | +AUTH_USER_MODEL = "api.UserAccount" |
211 | 209 |
|
212 | 210 | # Logging configuration |
| 211 | + |
213 | 212 | # LOGGING = { |
214 | 213 | # "version": 1, |
215 | 214 | # "disable_existing_loggers": False, |
|
0 commit comments