231 lines
6.5 KiB
Python
231 lines
6.5 KiB
Python
|
|
import os
|
|
import environ
|
|
import datetime
|
|
import django as django_module
|
|
|
|
from celery.schedules import crontab
|
|
from pathlib import Path
|
|
|
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
|
DJANGO_DIR = os.path.dirname(django_module.__file__)
|
|
|
|
SECRET_KEY = 'django-insecure-13n6^zl86r@=9@!z8gsfv(q6wpggo+$box)^tklnoe9auck-)c'
|
|
|
|
root = environ.Path(__file__) - 2
|
|
|
|
env = environ.Env(
|
|
LANGUAGE_CODE=(str, 'ru-RU'),
|
|
TIME_ZONE=(str, 'Asia/Vladivostok'),
|
|
USE_TZ=(bool, False),
|
|
USE_I18N=(bool, True),
|
|
)
|
|
|
|
DEBUG = env.bool('DEBUG', False)
|
|
|
|
REDIS_HOST = env.str('REDIS_HOST', 'medicine-stack-redis')
|
|
REDIS_PORT = env.str('REDIS_PORT', '6379')
|
|
REDIS_DB = env.str('REDIS_DB', 1)
|
|
|
|
POSTGRES_HOST = env.str('POSTGRES_HOST', 'medicine-stack-postgres')
|
|
POSTGRES_PORT = env.str('POSTGRES_PORT', '5432')
|
|
POSTGRES_DB = env.str('POSTGRES_DB', 'medicine_call')
|
|
POSTGRES_USER = env.str('POSTGRES_USER', 'postgres')
|
|
POSTGRES_PASSWORD = env.str('POSTGRES_PASSWORD', 'password')
|
|
|
|
ALLOWED_HOSTS = ['*']
|
|
|
|
INSTALLED_APPS = [
|
|
'django.contrib.admin',
|
|
'django.contrib.auth',
|
|
'django.contrib.contenttypes',
|
|
'django.contrib.sessions',
|
|
'django.contrib.messages',
|
|
'django.contrib.staticfiles',
|
|
'constance',
|
|
'ace_editor',
|
|
'rangefilter',
|
|
|
|
'appa',
|
|
'appa.medicine',
|
|
]
|
|
|
|
MIDDLEWARE = [
|
|
'django.middleware.security.SecurityMiddleware',
|
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
|
'django.middleware.common.CommonMiddleware',
|
|
'django.middleware.csrf.CsrfViewMiddleware',
|
|
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
|
'django.contrib.messages.middleware.MessageMiddleware',
|
|
]
|
|
|
|
ROOT_URLCONF = 'appa.urls'
|
|
|
|
TEMPLATES = [
|
|
{
|
|
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
|
'DIRS': [
|
|
os.path.join(BASE_DIR, 'appa/templates'),
|
|
DJANGO_DIR
|
|
],
|
|
'APP_DIRS': True,
|
|
'OPTIONS': {
|
|
'context_processors': [
|
|
'django.template.context_processors.debug',
|
|
'django.template.context_processors.request',
|
|
'django.contrib.auth.context_processors.auth',
|
|
'django.contrib.messages.context_processors.messages',
|
|
],
|
|
},
|
|
},
|
|
]
|
|
|
|
WSGI_APPLICATION = 'appa.wsgi.application'
|
|
|
|
DATABASES = {
|
|
'default': {
|
|
'ENGINE': 'django.db.backends.postgresql',
|
|
'HOST': POSTGRES_HOST,
|
|
'PORT': POSTGRES_PORT,
|
|
'NAME': POSTGRES_DB,
|
|
'USER': POSTGRES_USER,
|
|
'PASSWORD': POSTGRES_PASSWORD,
|
|
},
|
|
'medicine': {
|
|
'ENGINE': 'django.db.backends.postgresql',
|
|
'NAME': env.str('POSTGRES_MEDICINE_DB', 'medicine'),
|
|
'USER': POSTGRES_USER,
|
|
'PASSWORD': POSTGRES_PASSWORD,
|
|
'HOST': POSTGRES_HOST,
|
|
'PORT': POSTGRES_PORT
|
|
},
|
|
}
|
|
|
|
AUTH_PASSWORD_VALIDATORS = [
|
|
{
|
|
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
|
|
},
|
|
{
|
|
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
|
|
},
|
|
{
|
|
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
|
|
},
|
|
{
|
|
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
|
|
},
|
|
]
|
|
|
|
LANGUAGE_CODE = env.str('LANGUAGE_CODE')
|
|
|
|
TIME_ZONE = env.str('TIME_ZONE')
|
|
|
|
USE_I18N = env.bool('USE_I18N')
|
|
|
|
USE_TZ = env.bool('USE_TZ')
|
|
|
|
STATIC_URL = '/medicine-call/django_static/'
|
|
|
|
STATIC_ROOT = os.path.join(BASE_DIR, 'django_static')
|
|
|
|
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
|
|
|
SESSION_COOKIE_NAME = env.str('SESSION_COOKIE_NAME', 'medicine-call')
|
|
|
|
CONSTANCE_BACKEND = 'constance.backends.database.DatabaseBackend'
|
|
|
|
CONSTANCE_ADDITIONAL_FIELDS = {
|
|
'char': ['django.forms.fields.CharField', {
|
|
'widget': 'django.forms.TextInput',
|
|
'widget_kwargs': dict(attrs={'size': 60}),
|
|
'required': False
|
|
}],
|
|
'url': ['django.forms.fields.URLField', {
|
|
'widget': 'django.forms.TextInput',
|
|
'widget_kwargs': dict(attrs={'size': 60}),
|
|
'required': False
|
|
}]
|
|
}
|
|
|
|
CONSTANCE_CONFIG = {
|
|
'ENTRYPOINT_ADD_RECORDS': ('https://amniss-ai.ru/api/v.2/records/{scenarioId}', 'Адрес для добавления записей', 'char'),
|
|
'ENTRYPOINT_AUTH': ('https://amniss-ai.ru/api/auth', 'Адрес для авторизации', 'char'),
|
|
'ENTRYPOINT_DELETE': ('https://amniss-ai.ru/api/v.1/records/delete/%s', 'Адрес для удаления', 'char'),
|
|
'ENTRYPOINT_RECORD': ('https://amniss-ai.ru/api/v.1/records/%s', 'Адрес записи', 'char'),
|
|
'USERNAME': ('', 'Имя пользователя', 'char'),
|
|
'PASSWORD': ('', 'Пароль', 'char'),
|
|
'IS_ENABLED': (False, 'Активен', bool),
|
|
|
|
'MEDICINE_TOKEN': ('', 'Токен', 'char'),
|
|
'MEDICINE_HOST': ('http://medicine-app/', 'Хост', 'char'),
|
|
}
|
|
|
|
CONSTANCE_CONFIG_FIELDSETS = (
|
|
('API', (
|
|
'IS_ENABLED',
|
|
'USERNAME',
|
|
'PASSWORD',
|
|
'ENTRYPOINT_AUTH',
|
|
'ENTRYPOINT_ADD_RECORDS',
|
|
'ENTRYPOINT_DELETE',
|
|
'ENTRYPOINT_RECORD',
|
|
)),
|
|
('МИС', (
|
|
'MEDICINE_HOST',
|
|
'MEDICINE_TOKEN',
|
|
)),
|
|
)
|
|
|
|
REQUEST_TIMEOUT = 5
|
|
|
|
REDIS_CELERY_DB = env.str('REDIS_CELERY_DB', '7')
|
|
BROKER_URL = f'redis://{REDIS_HOST}:{REDIS_PORT}/{REDIS_CELERY_DB}'
|
|
CELERY_DEFAULT_QUEUE = 'default'
|
|
CELERY_ENABLE_UTC = True
|
|
CELERY_IGNORE_RESULT = True
|
|
|
|
CELERYBEAT_SCHEDULE = {
|
|
'update_call_requests_task': {
|
|
'task': 'appa.tasks.update_call_requests_task',
|
|
'schedule': crontab(hour='8', minute='0'),
|
|
'options': {'queue': CELERY_DEFAULT_QUEUE}
|
|
},
|
|
'check_call_requests_task': {
|
|
'task': 'appa.tasks.check_call_requests_task',
|
|
'schedule': crontab(minute='*/1'),
|
|
'options': {'queue': CELERY_DEFAULT_QUEUE}
|
|
},
|
|
#'send_daily_call_request_task': {
|
|
# 'task': 'appa.tasks.send_daily_call_request_task',
|
|
# 'schedule': crontab(hour='10', minute='0'),
|
|
# 'options': {'queue': CELERY_DEFAULT_QUEUE}
|
|
#},
|
|
'cleanup_task': {
|
|
'task': 'appa.tasks.cleanup_task',
|
|
'schedule': crontab(hour='0', minute='0'),
|
|
'options': {'queue': CELERY_DEFAULT_QUEUE}
|
|
},
|
|
}
|
|
|
|
DATE_FORMAT = 'd.m.Y'
|
|
DATETIME_FORMAT = 'd.m.Y H:i'
|
|
|
|
DATABASE_ROUTERS = [
|
|
'appa.medicine.router.MedicineRouter',
|
|
]
|
|
|
|
REDIS_CACHE_DB = env.str('REDIS_CELERY_DB', '8')
|
|
CACHES = {
|
|
"default": {
|
|
"BACKEND": "django_redis.cache.RedisCache",
|
|
"LOCATION": f"redis://{REDIS_HOST}:{REDIS_PORT}/{REDIS_CACHE_DB}",
|
|
"OPTIONS": {
|
|
"CLIENT_CLASS": "django_redis.client.DefaultClient",
|
|
}
|
|
}
|
|
}
|
|
|
|
if DEBUG:
|
|
AUTH_PASSWORD_VALIDATORS = []
|
|
SESSION_COOKIE_NAME = 'dev-medicine-call'
|