From fdd93aa278ba081c4abe7c2c34e145fa71af3799 Mon Sep 17 00:00:00 2001 From: Karel Balej Date: Thu, 3 Nov 2022 19:56:11 +0100 Subject: [PATCH] =?UTF-8?q?odevzdavatko:=20zobrazen=C3=AD=20chyby=20p?= =?UTF-8?q?=C5=99i=20nevalidn=C3=ADm=20formsetu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- odevzdavatko/views.py | 40 +++++++++++++++++----------------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/odevzdavatko/views.py b/odevzdavatko/views.py index ae466b0d..6c232172 100644 --- a/odevzdavatko/views.py +++ b/odevzdavatko/views.py @@ -246,32 +246,26 @@ def hodnoceniReseniView(request, pk, *args, **kwargs): formset = f.OhodnoceniReseniFormSet(request.POST) poznamka_form = f.PoznamkaReseniForm(request.POST, instance=reseni) # TODO: Napsat validaci formuláře a formsetu - # TODO: Implementovat větev, kdy formulář validní není. - if formset.is_valid() and poznamka_form.is_valid(): - with transaction.atomic(): - # Poznámka je jednoduchá na zpracování: - poznamka_form.save() + if not (formset.is_valid() and poznamka_form.is_valid()): + raise ValueError(formset.errors, poznamka_form.errors) - # Smažeme všechna dosavadní hodnocení tohoto řešení - qs = m.Hodnoceni.objects.filter(reseni=reseni) - logger.info(f"Will delete {qs.count()} objects: {qs}") - qs.delete() - - # Vyrobíme nová podle formsetu - for form in formset: - problem = form.cleaned_data['problem'] - body = form.cleaned_data['body'] - deadline_body = form.cleaned_data['deadline_body'] - feedback = form.cleaned_data['feedback'] - hodnoceni = m.Hodnoceni( - problem=problem, - body=body, - deadline_body=deadline_body, - feedback=feedback, + with transaction.atomic(): + # Poznámka je jednoduchá na zpracování: + poznamka_form.save() + + # Smažeme všechna dosavadní hodnocení tohoto řešení + qs = m.Hodnoceni.objects.filter(reseni=reseni) + logger.info(f"Will delete {qs.count()} objects: {qs}") + qs.delete() + + # Vyrobíme nová podle formsetu + for form in formset: + hodnoceni = m.Hodnoceni( reseni=reseni, + **form.cleaned_data, ) - logger.info(f"Creating Hodnoceni: {hodnoceni}") - hodnoceni.save() + logger.info(f"Creating Hodnoceni: {hodnoceni}") + hodnoceni.save() return redirect(success_url)