Skip to content

Проверка сроков программы в API и админке - #845

Merged
TThanos3000 merged 2 commits into
devfrom
fix/dev-program-setup-validation
Oct 30, 2026
Merged

TThanos3000 merged 2 commits into
devfrom
fix/dev-program-setup-validation

Conversation

@TThanos3000

@TThanos3000 TThanos3000 commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

Что изменено

API настройки сроков, подготовка к публикации и Django admin используют общую проверку календаря. Окончание программы должно быть позже начала, регистрация может идти после старта и завершаться в момент окончания программы. Неверные изменения не сохраняются.

Зачем

При проверке dev опубликованная программа принимала несовместимые даты. Исправление сохраняет возможность неполного календаря черновика и редактирования существующих программ с прошлыми сроками.

Реализация

Общие program_date_errors и reopens_program_deadline; подтверждение повторного открытия регистрации, сдачи с прежним fallback и оценивания. В обоих редакторах допустим пустой город. Изменение названия через admin не блокируется ранее сохраненным несовместимым календарем.

API

PATCH /programs/{id}/management/settings/dates/ возвращает 400 с ошибками полей для несовместимых дат. Payload, успешный ответ, object scope, optimistic locking и 409 reopen_confirmation_required сохранены. Старый Angular совместим.

UI

В Django admin ошибки показаны у полей; добавлена галочка подтверждения повторного открытия. Клиентские подсказки и заголовок программы находятся в Angular №515.

Permissions

Не менялись. Прямые запросы постороннего пользователя и без авторизации проверены: 403/401.

Проверки

Проверенная feature revision: 499ec8f54af226c6ef25410ccbedf4c698ed516b. Merge в dev: 4dfc0b2b249894c1f8ba1a1aa1807776d9735566.

  • Checked by tests: 81 тест test_program_dates, test_program_launch, test_management_api, test_registration_admin на отдельной локальной PostgreSQL test database; PASS.
  • Checked by CI: Backend PostgreSQL CI 40852424349 на этом head — success; проверены результаты полного backend suite, locking, миграций и lint.
  • Checked by source/static: Black, flake8 шести измененных файлов, полный flake8 с набором правил CI (--select=E,F,W,C90), Django check, makemigrations --check --dry-run и git diff --check — PASS; незакрытых замечаний review нет.
  • Checked in browser: Chromium, собранный Angular №515 → этот Django API → отдельная локальная PostgreSQL база. Неверные даты сохраняют ввод без записи; сервер возвращает 409 до подтверждения; регистрация до окончания включительно и неполный черновик сохраняются.
  • Checked in browser, admin: реальный Django admin отклоняет неверный порядок дат и повторное открытие без подтверждения; после подтверждения сохраняет сроки и пустой город. Проверки выполнялись только на локальных вымышленных данных.

Acceptance criteria

  • Некорректные даты не сохраняются в API и admin — API tests и browser.
  • Регистрация может идти после старта до окончания программы включительно — tests и browser readback.
  • Неполный черновик, прошлые сроки и metadata существующей программы допустимы — tests; browser partial draft.
  • Прямой запрос не расширяет доступ — отрицательные API tests.
  • Повторное открытие требует подтверждения в обоих интерфейсах — tests и browser.

Приемка dev

PR слит в dev. CI 41064782885 — Lint и Tests success. Deploy Dev 41064782882 — success. Лог сервера подтверждает HEAD 4dfc0b2b249894c1f8ba1a1aa1807776d9735566 и pinned web/worker image. Штатный routing smoke и независимая HTTP-проверка dev прошли: SPA/admin 200, закрытые API 401, некорректные запросы авторизации 400.

Не проверено

Авторизованное редактирование сроков на dev после merge: в облачной сессии нет входа в dev; соответствующая связка Angular/API/PostgreSQL проверена на локальных вымышленных данных. Внешние интеграции и production не проверялись. Angular build и полный frontend suite относятся к связанному PR №515.

Риски / migration

Миграции и пересохранение существующих данных не нужны. Порядок внедрения: API №845 → успешный dev deploy → Angular №515 → dev acceptance. API №845 уже слит и развернут в dev. Прод не затрагивался.

@TThanos3000
TThanos3000 marked this pull request as ready for review October 30, 2026 13:24
@TThanos3000
TThanos3000 merged commit 4dfc0b2 into dev Oct 30, 2026
3 checks passed
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