Skip to content

Обновить backend до Django 5.2 LTS и совместимых безопасных зависимостей - #847

Merged
TThanos3000 merged 3 commits into
devfrom
codex/update-supported-dependencies
Nov 2, 2026
Merged

TThanos3000 merged 3 commits into
devfrom
codex/update-supported-dependencies

Conversation

@TThanos3000

@TThanos3000 TThanos3000 commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

Backend переведен с Django 4.2.11 на Django 5.2.18 LTS с совместимыми версиями DRF, SimpleJWT, Requests, Pillow, WeasyPrint и связанных пакетов на Python 3.11.

Настройка статики использует STORAGES с сохранением WhiteNoise. Загрузчик сертификатов адаптирован к WeasyPrint 70 с запретом сетевых адресов и произвольных файлов. Ограничение bcrypt<5 сохраняет проверку старых длинных bcrypt-паролей. Poetry согласован между Docker и CI; CI собирает release Dockerfile и генерирует PDF внутри образа.

Проверки кода

  • 1949 тестов приложения на локальном PostgreSQL 16 — OK без пропусков. После тестов штатное удаление БД было заблокировано открытыми соединениями; тестовая БД удалена отдельно. Отдельный cleanup runner проверен.
  • Полный GitHub PostgreSQL CI, сборка Docker и API/PDF внутри образа, общий CI и мигратор PostgreSQL 14/18 — успешно: PostgreSQL и Docker, общий CI, мигратор.
  • Проверены сохранность старых программ/проектов, новых решений и паролей при миграции, чтение обновленной схемы старым кодом и прием старых access/refresh-токенов.
  • pip-audit: 147 записей lock-файла, известных уязвимостей и пропущенных записей нет на момент проверки.

Результат выкладки на dev

  • Выкладка успешна. Web и Celery работают на одном закрепленном образе от merge-коммита 9a85d7f; PostgreSQL 14, Django 5.2.18. Миграции, smoke API/admin и реальный Celery/Redis ping прошли.
  • До обновления создан защищенный архив БД с проверенным SHA256, полным чтением pg_restore и сохраненным rollback-образом: backup.
  • Приемка в фактическом web-контейнере: 85 API-проверок новых решений и 14 существующих legacy-программ. Все синтетические записи откачены транзакцией, существующие данные до/после приемки совпали. Письма и фоновые задачи в этом тесте подавлены.
  • Финальная диагностика: CDN auth/HEAD успешны, одно отдельно согласованное контрольное письмо принято почтовым сервисом. Временный секрет получателя удален.
  • Проверка неизменности относительно backup остановилась на двух измененных записях, удаленных исходных записей нет. Сравнение с архивом определило у программы 49 поле solution_creation_enabled; также изменилась одна анкета участника. Пользователь подтвердил параллельную E2E-приемку; в том чате зафиксированы переключение флага и подтверждение приветствия. Эти изменения сохранены. Финальный job остается failed из-за строгого сравнения данных, он не обозначается как полностью зеленый.

Границы

Prod не обновлялся. Нужен PostgreSQL 14 или новее. users.0066 меняет только состояние M2M-поля и дает no-op SQL на PostgreSQL. Проверки зависимостей не заменяют полный security-аудит. Отдельное изменение защиты внешней регистрации в эту выкладку не включено.

Подробности реализации: docs/dependency-upgrade-20261102.md.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant