Upgrade odevzdavatka #30

Merged
zelvuska merged 37 commits from upgrade_odevzdavatka into master 2023-06-19 20:48:30 +02:00
Showing only changes of commit 205aa0b900 - Show all commits

View file

@ -415,8 +415,8 @@ class NahrajReseniView(LoginRequiredMixin, CreateView):
def get(self, request, *args, **kwargs):
# Zaříznutí nezadaných problémů
nadproblem_id = self.kwargs["nadproblem_id"]
nadproblem = get_object_or_404(m.Problem, id=nadproblem_id)
if nadproblem.stav != "zadany":
self.nadproblem = get_object_or_404(m.Problem, id=nadproblem_id)
if self.nadproblem.stav != "zadany":
raise PermissionDenied()
@ -433,10 +433,10 @@ class NahrajReseniView(LoginRequiredMixin, CreateView):
return super().get(request, *args, **kwargs)
def get_initial(self):
nadproblem_id = self.kwargs["nadproblem_id"]
nadproblem_id = self.nadproblem.id
zelvuska marked this conversation as resolved Outdated

Nechceme ten nadproblém rovnou uložit jako Problém do self? Na první čtení jsem tady měl pocit, že když mi někdo předhodí blbost do URL, že někde něco musí spadnout…

Nechceme ten nadproblém rovnou uložit jako Problém do `self`? Na první čtení jsem tady měl pocit, že když mi někdo předhodí blbost do URL, že někde něco musí spadnout…

Užitečnost uložení přímo Problemu je i v tom, že pak podproblémy můžeš určit jako nadproblem.podproblemy.count() > 0 o kus níž (v rychlosti nevidím, jestli related managers umí i .exists())

Disclaimer: kód haluzím, nechtělo se mi to hledat přesně :-)

Užitečnost uložení přímo Problemu je i v tom, že pak podproblémy můžeš určit jako `nadproblem.podproblemy.count() > 0` o kus níž (v rychlosti nevidím, jestli related managers umí i `.exists()`) Disclaimer: kód haluzím, nechtělo se mi to hledat přesně :-)
return {
"nadproblem_id": nadproblem_id,
"problem": [] if m.Problem.objects.filter(stav=m.Problem.STAV_ZADANY, nadproblem__id=nadproblem_id) else nadproblem_id
"problem": [] if self.nadproblem.podproblem.filter(stav=m.Problem.STAV_ZADANY).exists() else nadproblem_id
zelvuska marked this conversation as resolved Outdated

Uh, tohle dělá co? Ať už to dělá cokoliv, tak to z toho není zřejmé. Zejména není samozřejmé, kdy je QuerySet falsey.

Po chvíli čtení: když to má podproblémy, tak nic nenabízíme, jinak nabídneme tu věc přímo.

Buď bych za ten QuerySet aspoň přidal .exists() (Dokumentace), nebo úplně vyčlenil:

...
ma_podproblemy = QuerySet.exists()
...
return {
	...
    "problem": [] if ma_podproblemy else nadproblem_id,
    ...
    }
Uh, tohle dělá co? Ať už to dělá cokoliv, tak to z toho není zřejmé. Zejména není samozřejmé, kdy je `QuerySet` falsey. Po chvíli čtení: když to má podproblémy, tak nic nenabízíme, jinak nabídneme tu věc přímo. Buď bych za ten QuerySet aspoň přidal `.exists()` ([Dokumentace](https://docs.djangoproject.com/en/3.2/ref/models/querysets/#exists)), nebo úplně vyčlenil: ```python3 ... ma_podproblemy = QuerySet….exists() ... return { ... "problem": [] if ma_podproblemy else nadproblem_id, ... } ```
}
@ -447,8 +447,8 @@ class NahrajReseniView(LoginRequiredMixin, CreateView):
else:
data['prilohy'] = f.ReseniSPrilohamiFormSet()
data["nadproblem_id"] = self.kwargs["nadproblem_id"]
data["nadproblem"] = get_object_or_404(m.Problem, id=self.kwargs["nadproblem_id"])
data["nadproblem_id"] = self.nadproblem.id
data["nadproblem"] = get_object_or_404(m.Problem, id=self.nadproblem.id)
return data
# FIXME prepsat tak, aby form_valid se volalo jen tehdy, kdyz je form i formset validni