Skip to content

feat(nowe_raporty): nowy raport w adminie zakłada definicję + pozycja w menu - #880

Merged
mpasternak merged 1 commit into
devfrom
feat/auto-definicje-raportow
Oct 22, 2026
Merged

mpasternak merged 1 commit into
devfrom
feat/auto-definicje-raportow

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Po co

Dodanie raportu we flexible-reports nie powodowało, że pojawiał się w menu „raporty” na stronie. Trzeba było jeszcze ręcznie założyć definicję raportu. Ta z kolei nie miała pozycji w menu admina i dało się do niej wejść tylko z listy aplikacji na dashboardzie.

Zmiany

  • Menu admina → Raporty: pierwsza pozycja to teraz „Definicje raportów”. Tam ustawiasz, co pokazuje menu „raporty” na stronie, komu i na których uczelniach. Pozostałe pozycje (Raporty / Źródła danych / Tabele) to „silnik” flexible-reports.

  • Auto-definicja: dodanie raportu w adminie (formularz albo „Klonuj”) zakłada mu definicję:

    • nieaktywną, więc nic samo nie wskakuje na stronę publiczną,
    • z poziomem uczelnia i dostępem zalogowani jako ustawieniami domyślnymi, bo Report nie mówi, jakiego poziomu dotyczy,
    • nazwa = tytuł (obcięty do 200 znaków), slug = slug raportu, przy kolizji z przyrostkiem -2, -3…

    Redaktor ustawia poziom, dostęp i uczelnie, zaznacza „aktywny” i raport pojawia się w menu.

Dlaczego log_addition, a nie post_save

BppReportAdmin (podmienia ReportAdmin z flexible-reports) wywołuje utworz_definicje_dla() w log_addition, bo przechodzą przez nią oba sposoby dodania raportu w adminie: add view (już po zapisaniu inline'ów) i clone_view. Sygnał post_save odpalałby się też przy seedingu. Definicja powstawałaby wtedy przed definicją seedingu, a seeding, który pomija istniejące slugi, zostawiłby np. raport autorów z poziomem uczelnia i bez dostępu „wszyscy”. Kolidowałby też z testami tworzącymi Report + definicję z tym samym slugiem. Kod tworzący Report programowo nadal sam decyduje o definicji, co pilnuje test.

Testy

  • src/nowe_raporty/tests/test_auto_definicja.py: dodanie przez admin, edycja (bez duplikatu), kolizja sluga, długi tytuł/slug, klonowanie, brak definicji dla Report tworzonego poza adminem. Przed implementacją oglądane na czerwono.
  • src/django_bpp/tests/test_menu.py: pierwsza pozycja „Raporty” to definicje.

Lokalnie src/nowe_raporty + src/django_bpp: 225 passed. pre-commit czysto.

🤖 Generated with Claude Code

… w menu

Dodanie raportu flexible-reports w adminie (formularz albo „Klonuj")
zakłada mu nieaktywną DefinicjaRaportu (poziom uczelnia, dostęp
zalogowani, slug z przyrostkiem przy kolizji). Bez tego nowy Report nie
trafiał do menu „raporty" na stronie, a redaktor musiał pamiętać
o drugim kroku w innym miejscu panelu.

Hak siedzi w ReportAdmin.log_addition, nie w post_save: seeding i kod
tworzący Report programowo same zakładają definicje z właściwymi
uprawnieniami — sygnał nadpisałby im slug/uprawnienia.

„Definicje raportów" są pierwszą pozycją sekcji „Raporty" w menu admina.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mpasternak
mpasternak merged commit ad8157f into dev Oct 22, 2026
22 checks passed
@mpasternak
mpasternak deleted the feat/auto-definicje-raportow branch October 22, 2026 17:24
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