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)