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'), 'SCENARIO_ID': ('', 'ID сценария', 'char'), 'USERNAME': ('', 'Имя пользователя', 'char'), 'PASSWORD': ('', 'Пароль', 'char'), 'IS_ENABLED': (False, 'Активен', bool), 'ACCESS_TOKEN': ('', 'Access token', 'char'), 'REFRESH_TOKEN': ('', 'Refresh token', 'char'), 'ACCESS_TOKEN_EXPIRED': ( datetime.datetime(2025, 1, 1, 0, 0), 'Access token expired', datetime.datetime ), 'CALL_TIME_START': ( datetime.time(9, 30), 'Время старта обзвона', datetime.time ), 'CALL_TIME_END': ( datetime.time(18, 30), 'Время окончания обзвона', datetime.time ), 'MEDICINE_TOKEN': ('', 'Токен', 'char'), 'MEDICINE_HOST': ('http://medicine-app/', 'Хост', 'char'), } CONSTANCE_CONFIG_FIELDSETS = ( ('API', ( 'IS_ENABLED', 'CALL_TIME_START', 'CALL_TIME_END', 'SCENARIO_ID', 'USERNAME', 'PASSWORD', 'ENTRYPOINT_AUTH', 'ENTRYPOINT_ADD_RECORDS', 'ENTRYPOINT_DELETE', 'ENTRYPOINT_RECORD', 'ACCESS_TOKEN', 'REFRESH_TOKEN', 'ACCESS_TOKEN_EXPIRED', )), ('МИС', ( '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='23', 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} } } DATE_FORMAT = 'd.m.Y' DATETIME_FORMAT = 'd.m.Y H:i' CALL_REQUEST_TIME_START = datetime.time(9, 0) CALL_REQUEST_TIME_END = datetime.time(21, 0) DATABASE_ROUTERS = [ 'appa.medicine.router.MedicineRouter', ] if DEBUG: AUTH_PASSWORD_VALIDATORS = [] SESSION_COOKIE_NAME = 'dev-medicine-call'