Skip to content

Historia zmian rekordów (django-reversion) — rozliczalność edycji + integracja z soft-delete #307

@mpasternak

Description

@mpasternak

Problem

Brak widocznej w adminie historii edycji rekordów. Operator nie ma jak
wyjaśnić „kto usunął / zmienił to i to w tym rekordzie" — szczególnie dla
najczęściej ręcznie edytowanych typów: zgłoszenia publikacji i rekordy
wydawnictw
, a także struktury (Uczelnia/Jednostka/Wydzial) i Autora.

Kierunek (ustalony)

Rozszerzyć istniejący django-reversion (VersionAdmin +
reversion-compare, już działa na Uczelnia) na zdefiniowany zbiór modeli.
Cel: rozliczalność edycji ludzkich (kto/kiedy/co + compare + revert), nie
total-audyt bazy. Odrzucono pghistory (total-audyt DB) i simple-history
(duplikacja tabel).

Krytyczne: integracja z trwającym soft-delete

Bez tego główny use-case („kto usunął, widoczne w Historii") cicho nie zadziała:

  1. soft-delete i restore w adminie muszą tworzyć rewizję reversion
    (set_user + set_comment) — inaczej usunięcie nie pojawi się w zakładce Historia;
  2. wspólny punkt wstrzyknięcia request.user dla reversion i SoftDeleteLog;
  3. MRO VersionAdmin + mixin soft-delete, get_queryset → global_objects
    (usunięty rekord otwieralny), ukrycie reversion „recover deleted".

Komplementarne do SoftDeleteLog (loguje zdarzenia delete/restore) — reversion
trzyma pełną oś edycji pól.

Status

Implementacja odłożona do po wdrożeniu soft-delete. Ustalenia i kontrakty
integracyjne spisane; referencje do kodu wymagają aktualizacji po soft-delete.

Spec

docs/superpowers/specs/2026-06-04-historia-zmian-reversion-design.md
(gałąź docs/historia-zmian-reversion)

Powiązane: spec soft-delete docs/superpowers/specs/2026-06-04-soft-delete-publikacje-i-autorzy-design.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions