Closed Ph0enixKM closed 4 months ago
Nie wiem czy do końca rozumiem co Pan sugeruje, ale przeczytałem właśnie moje zmiany po krótkiej przerwie i wydaje mi się, że ujednolicenie tutaj kodu będzie nadinżynierią, ponieważ tutaj zamiast:
Myślę, że bezpośrednie operowanie na konkretnym ID i wykonanie kilku prostych zapytań booleanowskich jest znacznie szybsze i bardziej efektywne niż przetwarzanie i filtrowanie całej listy prac dyplomowych, zwłaszcza gdy rozmiar danych zacznie rosnąć.
Zdaje się że po zmianach pojawi się jeden niepożądany (choć drobny) scenariusz; student widzący "swój" temat jeszcze przed akceptacją może kliknąć link do deklaracji przygoto(wy)wania pracy, po czym dostanie w twarz PermissionDenied
. Trzeba więc ujednolicić zmienne can_download_declarations
i user_allowed_to_generate
w tych dwóch metodach, zarówno co do semantyki, jak i nazwy – i znowu, skoro pojawia się to dwa razy, to niech będzie metodą Thesis
.
Proszę jeszcze zastanowić się, czy nie pojawia się jeszcze jakieś zachowanie tego typu.
@lgpawel Usunąłem zmienną user_privileged_for_thesis
w gen_form
, która oryginalnie była używana, ale po refaktorze nie jest ona potrzebna, ponieważ przechowywała ona jedynie wartość pośrednią, która jest już teraz obliczana wewnątrz funkcji dla zmiennej poniżej (user_allowed_to_generate
).
Plik models.py
:
is_user_privileged
: Sprawdza, czy użytkownik ma uprzywilejowany dostęp.can_user_download_declarations
: Sprawdza czy użytkownik może pobrać deklaracje.ThesesQuerySet.visible
: Przypisani studenci mogą również mieć dostęp do pracy.Plik views.py
:
get_object_or_404(Thesis, id=id)
używamy teraz metodę ThesesQuerySet.visible
user_privileged_for_thesis
: Nie jest już potrzebna jako, że ta wartość pośrednia jest obliczana w nowych metodachif not thesis.has_been_accepted and not user_privileged_for_thesis:
ponieważ to już nam zapewnia filtr ThesesQuerySet.visible
user_privileged_for_thesis
oraz user_allowed_to_generate
zostało również usunięte ze względu na to, że również są te wartości obliczane w nowych metodach
Użytkownik mógł zobaczyć swoją pracę dyplomową w zależności od statusu. Teraz może ją zobaczyć niezależnie od statusu (tj. również przed akceptacją)