infra: надёжное обнаружение тестов, Redis-кэш и хардненинг прода

- AcoreDiscoverRunner собирает tests/tests_* всех локальных приложений
  (manage.py test находил 38 тестов из ~466 — теперь все).
- CACHES на Redis (отдельная DB от Celery) + обязательный requirepass
  в production, SECURE_HSTS_PRELOAD.
- Фикс stored-XSS в админке: format_html вместо mark_safe + f-string.
- Утилиты безопасности/тестов, шифрование полей.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-09-09 18:03:11 +03:00
parent 70e5a77b04
commit 719d0b737b
11 changed files with 470 additions and 19 deletions
+8
View File
@@ -1,7 +1,11 @@
import logging
from django.db import models
from core.utils.crypto import encrypt_secret, decrypt_secret
logger = logging.getLogger(__name__)
class EncryptedCharField(models.CharField):
"""CharField, который хранит значение в БД в зашифрованном виде (Fernet).
@@ -27,4 +31,8 @@ class EncryptedCharField(models.CharField):
return decrypt_secret(value)
except Exception:
# Значение записано до включения шифрования — вернуть как есть.
logger.warning(
'EncryptedCharField: decrypt failed, returning raw DB value '
'(check FIELD_ENCRYPTION_KEY rotation)'
)
return value