Skip to content

Hotfix: email, поиск и фильтр программ в админке экспертов - #759

Merged
TThanos3000 merged 1 commit into
masterfrom
hotfix/expert-admin-email
Sep 28, 2026
Merged

TThanos3000 merged 1 commit into
masterfrom
hotfix/expert-admin-email

Conversation

@TThanos3000

@TThanos3000 TThanos3000 commented Sep 28, 2026 •

Copy link
Copy Markdown
Collaborator

В Django admin → «Эксперты» email теперь виден отдельной колонкой сразу после user. Поиск находит экспертов по имени, фамилии, полному и частичному email, например e@tokarev.work, tokarev или e@.

Изменены только два backend-файла:

  • users/admin.py: ExpertAdmin.list_display = ("id", "user", "email"); метод email, отмеченный @admin.display(description="Email"), возвращает obj.user.email.
  • users/tests/test_expert_admin.py: расширены существующие admin-тесты из DEV PR DEV: добавить поиск и фильтр программ для экспертов #758; добавлены проверки отдельной email-колонки, частичного email, сочетания email с фильтром и отсутствия N+1 при чтении обеих колонок.

search_fields = ("user__first_name", "user__last_name", "user__email"). Сохраняется стандартный Django admin search (icontains, AND между словами, OR между полями). Кастомного full-name search в предыдущей реализации нет; поиск нескольких слов по имени и фамилии покрыт сохранёнными тестами.

В master ещё нет изменений из уже влитого в dev PR #758. Поэтому этот PR переносит только его настройки ExpertAdmin и существующий файл admin-тестов. Фильтр сохранён без изменения relation path: list_filter = ("user__partner_program_profiles__partner_program",). Проверены All, пустая программа, эксперт в двух программах, отсутствие дублей и сочетание поиска с фильтром.

list_select_related = ("user",) исключает N+1: чтение строк changelist, str(expert.user) и email выполняется одним SQL-запросом с фильтром, без фильтра и при сочетании фильтра с поиском.

Проверки:

  • Targeted: python manage.py test users.tests.test_expert_admin --verbosity 2 --keepdb --noinput — 21 passed, PostgreSQL 18.1 / Python 3.11.15 / Django 4.2.11 / procollab.settings_ci.
  • Backend PostgreSQL CI — success, PostgreSQL 15: полный backend suite 1617 tests, OK (skipped=3); locking/constraint tests 86 OK; production surface quarantine 16 tests, OK (skipped=2). Проверки конфигурации, моделей, миграций и CI settings также прошли.
  • CI — success: Lint success, обычный SQLite Tests 1617 tests, OK (skipped=9). Один из пропусков — сохранённая PostgreSQL-only проверка регистронезависимости кириллицы; на PostgreSQL этот admin-тест выполнен успешно.
  • Полный локальный PostgreSQL 18.1 suite: python manage.py test --verbosity 1 --keepdb --noinput с procollab.settings_ci и NEXTGEN_SURFACE_ENABLED=True, как в CI — 1617 tests, OK (skipped=3), 1180.839 s, exit 0. Использован отдельный локальный кластер PostgreSQL; DEV/PROD базы не использовались.
  • Локально: manage.py check — 0 issues; makemigrations --check --dry-run — No changes detected; Flake8 обоих изменённых файлов и git diff --check — pass.
  • Black: тестовый файл и изменённый блок ExpertAdmin — pass. Полный users/admin.py имеет существующее отличие форматирования в CustomUserAdmin.formfield_for_manytomany, воспроизводимое на исходном master; посторонний блок не изменён.

Models, permissions, API, бизнес-логика, Angular, React, migrations, dependencies и workflows не изменены. Draft PR направлен в master; merge/deploy не выполнялись.

@TThanos3000
TThanos3000 marked this pull request as ready for review September 28, 2026 13:40
@TThanos3000
TThanos3000 merged commit 7b2918e into master Sep 28, 2026
8 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.

2 participants