""" Django settings for vacancies project. Generated by 'django-admin startproject' using Django 5.2.7. For more information on this file, see https://docs.djangoproject.com/en/5.2/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/5.2/ref/settings/ """ import os from pathlib import Path from urllib.parse import quote import sentry_sdk # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent.parent SECRET_KEY = os.getenv("SECRET_KEY") DEBUG = os.getenv("DEBUG", "false").lower() == "true" ALLOWED_HOSTS = os.getenv("ALLOWED_HOSTS", "*").split(",") if not DEBUG: CSRF_COOKIE_DOMAIN = os.getenv('CSRF_COOKIE_DOMAIN', '.levelsapp.ru') SESSION_COOKIE_DOMAIN = os.getenv('SESSION_COOKIE_DOMAIN', CSRF_COOKIE_DOMAIN) CSRF_TRUSTED_ORIGINS = [f'https://*{SESSION_COOKIE_DOMAIN}', f'http://*{SESSION_COOKIE_DOMAIN}'] # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'vacancies.main', 'vacancies.hh_parser', ] MIDDLEWARE = [ 'whitenoise.middleware.WhiteNoiseMiddleware', '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', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'vacancies.conf.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] WSGI_APPLICATION = 'vacancies.conf.wsgi.application' # Database # https://docs.djangoproject.com/en/5.2/ref/settings/#databases DATABASES = { "default": { "ENGINE": "django.db.backends.postgresql", "NAME": os.getenv("PG_NAME", "postgres"), "USER": os.getenv("PG_USER", "postgres"), "PASSWORD": os.getenv("PG_PASSWORD", "postgres"), "HOST": os.getenv("PG_HOST", "localhost"), "PORT": os.getenv("PG_PORT", "5432"), "CONN_HEALTH_CHECKS": True, }, "hh_parser": { "ENGINE": "django.db.backends.postgresql", "NAME": os.getenv("HH_PARSER_PG_NAME", "postgres"), "USER": os.getenv("HH_PARSER_PG_USER", "postgres"), "PASSWORD": os.getenv("HH_PARSER_PG_PASSWORD", "postgres"), "HOST": os.getenv("HH_PARSER_PG_HOST", "localhost"), "PORT": os.getenv("HH_PARSER_PG_PORT", "5432"), "CONN_HEALTH_CHECKS": True, }, } DATABASE_ROUTERS = ["vacancies.hh_parser.routers.AppRouter"] DB_URI = f"postgres://{DATABASES['default']['USER']}:{quote(DATABASES['default']['PASSWORD'])}@{DATABASES['default']['HOST']}:{DATABASES['default']['PORT']}/{DATABASES['default']['NAME']}?sslmode=disable" # Password validation # https://docs.djangoproject.com/en/5.2/ref/settings/#auth-password-validators 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 = "ru-RU" USE_I18N = True USE_TZ = True TIME_ZONE = os.getenv("TIME_ZONE", "Europe/Moscow") STATIC_URL = "static/" STATIC_ROOT = BASE_DIR / "static" DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' SENTRY_DSN = os.getenv('SENTRY_DSN') SENTRY_ENVIRONMENT = os.getenv('SENTRY_ENVIRONMENT', 'production') if SENTRY_DSN: sentry_sdk.init( dsn=SENTRY_DSN, environment=SENTRY_ENVIRONMENT, send_default_pii=True, traces_sample_rate=1.0, profile_session_sample_rate=1.0, profile_lifecycle="trace", ) LOGGING = { "version": 1, "disable_existing_loggers": False, "formatters": { "verbose": { "format": "{levelname}: {asctime}: {message}", "style": "{", }, }, "handlers": { "console": { "class": "logging.StreamHandler", "formatter": "verbose", }, }, "loggers": { "django": { "handlers": ["console"], "level": os.getenv("DJANGO_LOG_LEVEL", "INFO"), "propagate": False, }, }, } CLICKHOUSE_HOST = os.getenv("CLICKHOUSE_HOST", "127.0.0.1") CLICKHOUSE_PORT = int(os.getenv("CLICKHOUSE_PORT", "18123")) QDRANT_URL = os.getenv("QDRANT_URL", "http://localhost:6333") COLLECT_VACANCIES_BATCH_SIZE = int(os.getenv("COLLECT_VACANCIES_BATCH_SIZE", "50"))