· 4 years ago · Jan 04, 2021, 08:28 AM
1"""
2НАСТРОЙКИ DJANGO ДЛЯ ПРОЕКТА SAU-EXPERT.
3ПРОЕКТ СГЕНЕРИРОВАН КОМАНДОЙ "django-admin startproject" DJANGO 3.0.5
4"""
5
6import os
7from dotenv import load_dotenv
8
9load_dotenv()
10
11BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
12
13# ДЕРЖИТЕ СЕКРЕТНЫЙ КЛЮЧ ИСПОЛЬЗУЕМЫЙ В PRODUCTION, В СЕКРЕТЕ!
14SECRET_KEY = 'ituragz-5d6!*emx+_7ne-fp=kk36pna@-gunj4wltqrja%qx0'
15
16# НЕ ВКЛЮЧАТЬ В РЕЖИМЕ PRODUCTION
17DEBUG = os.environ.get('DEBUG')
18APP_URL = os.environ.get('APP_URL')
19MAIN_MANAGER_ID = os.environ.get('MAIN_MANAGER_ID')
20
21ALLOWED_HOSTS = os.environ.get('ALLOWED_HOSTS').split()
22
23CORS_ORIGIN_ALLOW_ALL = True
24# CORS_ORIGIN_WHITELIST = os.environ.get('CORS_ORIGIN_WHITELIST')
25# CORS_ORIGIN_ALLOW_ALL = bool(os.environ.get('CORS_ORIGIN_ALLOW_ALL'))
26# CORS_ALLOW_CREDENTIALS = bool(os.environ.get('CORS_ALLOW_CREDENTIALS'))
27# CORS_ALLOW_HEADERS = os.environ.get('CORS_ALLOW_HEADERS')
28
29HTTP_X_FORWARDED_PROTO_VALUE = os.environ.get('HTTP_X_FORWARDED_PROTO', 'https')
30
31if HTTP_X_FORWARDED_PROTO_VALUE == 'https':
32 SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
33 SECURE_SSL_REDIRECT = True
34 SESSION_COOKIE_SECURE = True
35 CSRF_COOKIE_SECURE = True
36
37AUTH_USER_MODEL = 'users.User'
38
39# НАСТРОЙКИ REDIS
40CHANNEL_LAYERS = {
41 'default': {
42 'BACKEND': 'channels_redis.core.RedisChannelLayer',
43 'CONFIG': {
44 "hosts": [(os.environ.get('REDIS_HOST'), os.environ.get('REDIS_PORT', 6379))],
45 },
46 },
47}
48
49# ПРИЛОЖЕНИЯ ПРОЕКТА
50PROJECT_APPS = [
51 'mails',
52 'chat',
53 'tasks',
54 'notifications',
55 'doctors',
56 'patients.apps.PatientsConfig',
57 'managers',
58 'dictionaries',
59 'billing',
60 'corporate_managers'
61]
62
63INSTALLED_APPS = [
64 'corsheaders',
65 'rest_framework.authtoken',
66 'rest_framework',
67 'jet',
68 'channels',
69 'django_filters',
70 'push_notifications',
71 'django_extensions',
72 'users.apps.UsersConfig',
73 'django.contrib.admin',
74 'django.contrib.auth',
75 'django.contrib.contenttypes',
76 'django.contrib.sessions',
77 'django.contrib.messages',
78 'django.contrib.staticfiles',
79 'drf_yasg',
80 'django_celery_results',
81 'django_celery_beat',
82]
83
84INSTALLED_APPS += PROJECT_APPS
85
86MIDDLEWARE = [
87 'corsheaders.middleware.CorsMiddleware',
88 'django.middleware.security.SecurityMiddleware',
89 'django.contrib.sessions.middleware.SessionMiddleware',
90 'django.middleware.common.CommonMiddleware',
91 'django.middleware.csrf.CsrfViewMiddleware',
92 'django.contrib.auth.middleware.AuthenticationMiddleware',
93 'django.contrib.messages.middleware.MessageMiddleware',
94 'django.middleware.clickjacking.XFrameOptionsMiddleware',
95]
96
97REST_FRAMEWORK = {
98 'DEFAULT_AUTHENTICATION_CLASSES': [
99 'rest_framework.authentication.TokenAuthentication',
100 ],
101 'DEFAULT_FILTER_BACKENDS': [
102 'django_filters.rest_framework.DjangoFilterBackend',
103 'rest_framework.filters.OrderingFilter',
104 'rest_framework.filters.SearchFilter',
105 ],
106 'DEFAULT_PAGINATION_CLASS': 'config.pagination.CustomPagination',
107 'PAGE_SIZE': 10
108}
109
110ROOT_URLCONF = 'config.urls'
111
112TEMPLATES = [
113 {
114 'BACKEND': 'django.template.backends.django.DjangoTemplates',
115 'DIRS': [],
116 'APP_DIRS': True,
117 'OPTIONS': {
118 'context_processors': [
119 'django.template.context_processors.debug',
120 'django.template.context_processors.request',
121 'django.contrib.auth.context_processors.auth',
122 'django.contrib.messages.context_processors.messages',
123 ],
124 },
125 },
126]
127
128WSGI_APPLICATION = 'config.wsgi.application'
129ASGI_APPLICATION = 'config.routing.application'
130
131# НАСТРОЙКИ БАЗЫ ДАННЫХ
132DATABASES = {
133 "default": {
134 "ENGINE": os.environ.get("DB_ENGINE"),
135 "NAME": os.environ.get("DB_NAME"),
136 "USER": os.environ.get("DB_USER"),
137 "PASSWORD": os.environ.get("DB_PASSWORD"),
138 "HOST": os.environ.get("DB_HOST"),
139 }
140}
141
142# НАСТРОЙКИ ПОЧТЫ
143EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
144EMAIL_HOST = os.environ.get('EMAIL_HOST')
145EMAIL_USE_TLS = os.environ.get('EMAIL_USE_TLS', True)
146EMAIL_PORT = os.environ.get('EMAIL_PORT', 587)
147EMAIL_HOST_USER = os.environ.get('EMAIL_HOST_USER')
148EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_HOST_PASSWORD')
149
150# НАСТРОЙКИ CELERY ДЛЯ ВЫПОЛНЕНИЕ АВТОЗАДАЧ.
151CELERY_BROKER_URL = f"redis://{os.environ.get('REDIS_HOST')}:{os.environ.get('REDIS_PORT')}/0"
152CELERY_ACCEPT_CONTENT = ['json']
153CELERY_TASK_SERIALIZER = 'json'
154CELERY_TIMEZONE = 'Asia/Almaty'
155CELERY_RESULT_BACKEND = 'django-db'
156CELERY_CACHE_BACKEND = 'django-cache'
157
158# CLOUD PAYMENTS SETTINGS
159CLOUD_PAYMENTS = {
160 "PUBLIC_ID": os.environ.get('CLOUD_PAYMENTS_PUBLIC_ID', None),
161 "SECRET": os.environ.get('CLOUD_PAYMENTS_SECRET', None),
162 "IP_NETWORKS": os.environ.get('CLOUD_PAYMENTS_IP_NETWORKS', []),
163}
164
165AUTH_PASSWORD_VALIDATORS = [
166 {
167 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
168 },
169 {
170 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
171 },
172 {
173 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
174 },
175 {
176 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
177 },
178]
179
180# Internationalization
181
182LANGUAGE_CODE = 'ru-ru'
183
184TIME_ZONE = 'Asia/Almaty'
185
186USE_I18N = True
187
188USE_L10N = True
189
190USE_TZ = True
191
192# Static files (CSS, JavaScript, Images)
193# https://docs.djangoproject.com/en/3.0/howto/static-files/
194
195STATIC_URL = '/storage/'
196MEDIA_ROOT = os.path.join(BASE_DIR, 'storage', 'uploads')
197MEDIA_URL = '/uploads/'
198
199PUSH_NOTIFICATIONS_SETTINGS = {
200 "FCM_API_KEY": os.environ.get("FCM_API_KEY"),
201}