98 lines
3.0 KiB
Python
98 lines
3.0 KiB
Python
"""
|
|
Development settings - закрытый контур, без переменных окружения.
|
|
"""
|
|
|
|
import os
|
|
|
|
from .base import *
|
|
|
|
SECRET_KEY = "django-insecure-development-key-mostovik-2024"
|
|
DEBUG = True
|
|
ALLOWED_HOSTS = ["*"]
|
|
OPENAPI_USE_ENGLISH_TAGS = True
|
|
STATE_CORP_EXCHANGE_URL = os.getenv(
|
|
"STATE_CORP_EXCHANGE_URL",
|
|
"http://127.0.0.1:8001/api/v1/exchange/packages/upload/",
|
|
)
|
|
STATE_CORP_EXCHANGE_TOKEN = os.getenv(
|
|
"STATE_CORP_EXCHANGE_TOKEN",
|
|
"state-corp-dev-exchange-token-v1",
|
|
)
|
|
|
|
# JWT
|
|
SIMPLE_JWT["SIGNING_KEY"] = SECRET_KEY
|
|
|
|
# Dev frontend can run from any workstation/port in the local network.
|
|
# Production keeps the restrictive CORS/CSRF policy from settings.production.
|
|
CORS_ALLOW_ALL_ORIGINS = True
|
|
CORS_ALLOW_CREDENTIALS = True
|
|
CORS_ALLOW_PRIVATE_NETWORK = True
|
|
CSRF_COOKIE_SECURE = False
|
|
SESSION_COOKIE_SECURE = False
|
|
|
|
|
|
def _normalize_local_host(host: str) -> str:
|
|
"""Нормализует host для локального запуска backend на хосте."""
|
|
if host == "host.docker.internal":
|
|
return "127.0.0.1"
|
|
return host
|
|
|
|
|
|
_postgres_host = _normalize_local_host(os.getenv("POSTGRES_HOST", "127.0.0.1"))
|
|
_redis_host = _normalize_local_host(os.getenv("REDIS_HOST", "127.0.0.1"))
|
|
|
|
# Database
|
|
DATABASES = {
|
|
"default": {
|
|
"ENGINE": "django.db.backends.postgresql",
|
|
"NAME": os.getenv("POSTGRES_DB", "mostovik"),
|
|
"USER": os.getenv("POSTGRES_USER", "postgres"),
|
|
"PASSWORD": os.getenv("POSTGRES_PASSWORD", "postgres"),
|
|
# При локальном запуске backend (не в контейнере) подключаемся к портам,
|
|
# проброшенным docker-compose.service.yml
|
|
"HOST": _postgres_host,
|
|
"PORT": os.getenv("POSTGRES_PORT", "5432"),
|
|
}
|
|
}
|
|
|
|
# Celery
|
|
_default_redis_broker = f"redis://{_redis_host}:6379/0"
|
|
_default_redis_cache = f"redis://{_redis_host}:6379/1"
|
|
|
|
CELERY_BROKER_URL = os.getenv("CELERY_BROKER_URL", _default_redis_broker).replace(
|
|
"host.docker.internal", "127.0.0.1"
|
|
)
|
|
CELERY_RESULT_BACKEND = os.getenv(
|
|
"CELERY_RESULT_BACKEND", _default_redis_broker
|
|
).replace("host.docker.internal", "127.0.0.1")
|
|
CELERY_ACCEPT_CONTENT = ["json"]
|
|
CELERY_TASK_SERIALIZER = "json"
|
|
CELERY_RESULT_SERIALIZER = "json"
|
|
CELERY_TIMEZONE = "Europe/Moscow"
|
|
|
|
# Cache
|
|
CACHES = {
|
|
"default": {
|
|
"BACKEND": "django_redis.cache.RedisCache",
|
|
"LOCATION": os.getenv("REDIS_CACHE_URL", _default_redis_cache).replace(
|
|
"host.docker.internal", "127.0.0.1"
|
|
),
|
|
"OPTIONS": {
|
|
"CLIENT_CLASS": "django_redis.client.DefaultClient",
|
|
},
|
|
}
|
|
}
|
|
|
|
# Email
|
|
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
|
|
|
|
# DRF: отключаем throttling в dev, чтобы не мешать фронту тестировать API.
|
|
REST_FRAMEWORK = {
|
|
**globals().get("REST_FRAMEWORK", {}),
|
|
"DEFAULT_THROTTLE_CLASSES": [],
|
|
"DEFAULT_THROTTLE_RATES": {},
|
|
}
|
|
|
|
# Dev-only: frontend/scripts can inspect the new v2 organizations API without JWT.
|
|
ORGANIZATIONS_V2_ALLOW_ANONYMOUS = True
|