Skip to content

Rozdział: dziedziczenie wydawcy po wydawnictwie nadrzędnym + podświetlenie wymaganego pola (Freshdesk #385)#401

Merged
mpasternak merged 1 commit into
devfrom
fd-385-rozdzial-wydawca
Jul 7, 2026
Merged

Rozdział: dziedziczenie wydawcy po wydawnictwie nadrzędnym + podświetlenie wymaganego pola (Freshdesk #385)#401
mpasternak merged 1 commit into
devfrom
fd-385-rozdzial-wydawca

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Co

Dla rozdziałów (rekord Wydawnictwo_Zwarte ze wskazanym wydawnictwem nadrzędnym) w adminie:

  1. Dziedziczenie wydawcy po wydawnictwie nadrzędnym — autorytatywnie po stronie serwera, bez JS. Gdy operator pozostawi pole „wydawca" puste, Wydawnictwo_ZwarteForm.clean() podstawia wydawcę z wydawnictwa nadrzędnego. Jawnie wpisany wydawca nie jest nadpisywany. Operator dostaje komunikat (messages.warning) o odziedziczeniu. Logika wydzielona do testowalnego helpera _dziedzicz_wydawce_po_nadrzednym().
  2. Podświetlenie pola „wydawca" jako wymaganego przy rozdziale — warstwa wyłącznie wizualna (admin JS + CSS), aktywna gdy wskazano wydawnictwo nadrzędne, a pole „wydawca" jest puste (marker „❗ wymagane przy rozdziale" + obramowanie pola). Dodano też help_text wyjaśniający mechanizm dziedziczenia.

Dlaczego

Freshdesk #385: przy wprowadzaniu rozdziału system nie sygnalizował, że obok wydawnictwa należy podać także wydawcę — łatwo było to przeoczyć. Prośba zgłaszającego: (1) wyraźnie oznaczać wymagane pole „wydawca", (2) wprowadzić dziedziczenie wydawcy po wydawnictwie nadrzędnym z możliwością ręcznej korekty.

Jak testowano

uv run pytest src/bpp/tests/test_admin/test_wydawnictwo_zwarte.py — 5 passed. Nowe testy pytest pokrywają:

  • rozdział bez własnego wydawcy dziedziczy wydawcę po nadrzędnym (+ warning),
  • jawnie podany wydawca NIE jest nadpisywany,
  • nadrzędne bez wydawcy — pole pozostaje puste, bez warningu,
  • brak nadrzędnego (nie-rozdział) — bez efektu.

Dodatkowo: ruff format/ruff check czysto, uv run python src/manage.py check bez uwag, node --check na pliku JS OK. Brak migracji (zmiany tylko w formularzu/adminie i statykach).

Co odłożono

  • Twarda walidacja (hard-required wydawcy przy rozdziale) świadomie pominięta — wymuszanie na poziomie formularza mogłoby zablokować istniejące ścieżki wprowadzania danych i rekordy bez wydawcy. Zamiast tego: podświetlenie (UI) + dziedziczenie (serwer), które razem rozwiązują problem przeoczenia bez ryzyka regresji.
  • Prefill wydawcy w UI w czasie rzeczywistym (AJAX po wyborze nadrzędnego) pominięty — autorytatywne dziedziczenie działa na serwerze w clean(), więc JS-owy prefill byłby tylko kosmetyką wymagającą nowego endpointu.

🤖 Generated with Claude Code

…nym + podświetlenie (Freshdesk #385)

Przy wprowadzaniu rozdziału (Wydawnictwo_Zwarte z wydawnictwem nadrzędnym)
operatorzy łatwo przeoczali pole "wydawca". Dwie zmiany:

1. Dziedziczenie wydawcy (autorytatywnie po stronie serwera, bez JS):
   Wydawnictwo_ZwarteForm.clean() podstawia wydawcę z wydawnictwa
   nadrzędnego, gdy pole "wydawca" pozostaje puste. Jawnie wpisany
   wydawca NIE jest nadpisywany. Operator dostaje komunikat (warning)
   o odziedziczeniu. Logika wydzielona do testowalnego helpera
   _dziedzicz_wydawce_po_nadrzednym().

2. Podświetlenie pola "wydawca" jako wymaganego przy rozdziale — warstwa
   wyłącznie wizualna (admin JS + CSS), aktywna gdy wskazano wydawnictwo
   nadrzędne, a pole "wydawca" jest puste. Dodano też help_text na polu.

Brak migracji (zmiany tylko w formularzu/adminie). Testy pytest pokrywają:
dziedziczenie przy pustym wydawcy, brak nadpisywania jawnie podanego,
nadrzędne bez wydawcy oraz brak nadrzędnego.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mpasternak mpasternak merged commit dbe2371 into dev Jul 7, 2026
23 checks passed
@mpasternak mpasternak deleted the fd-385-rozdzial-wydawca branch July 7, 2026 19:26
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