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