Browse Source

odevzdavatko: zobrazení chyby při nevalidním formsetu

Karel Balej 2 years ago
parent
commit
fdd93aa278
  1. 40
      odevzdavatko/views.py

40
odevzdavatko/views.py

@ -246,32 +246,26 @@ def hodnoceniReseniView(request, pk, *args, **kwargs):
formset = f.OhodnoceniReseniFormSet(request.POST) formset = f.OhodnoceniReseniFormSet(request.POST)
poznamka_form = f.PoznamkaReseniForm(request.POST, instance=reseni) poznamka_form = f.PoznamkaReseniForm(request.POST, instance=reseni)
# TODO: Napsat validaci formuláře a formsetu # TODO: Napsat validaci formuláře a formsetu
# TODO: Implementovat větev, kdy formulář validní není. if not (formset.is_valid() and poznamka_form.is_valid()):
if formset.is_valid() and poznamka_form.is_valid(): raise ValueError(formset.errors, poznamka_form.errors)
with transaction.atomic():
# Poznámka je jednoduchá na zpracování:
poznamka_form.save()
# Smažeme všechna dosavadní hodnocení tohoto řešení with transaction.atomic():
qs = m.Hodnoceni.objects.filter(reseni=reseni) # Poznámka je jednoduchá na zpracování:
logger.info(f"Will delete {qs.count()} objects: {qs}") poznamka_form.save()
qs.delete()
# Smažeme všechna dosavadní hodnocení tohoto řešení
# Vyrobíme nová podle formsetu qs = m.Hodnoceni.objects.filter(reseni=reseni)
for form in formset: logger.info(f"Will delete {qs.count()} objects: {qs}")
problem = form.cleaned_data['problem'] qs.delete()
body = form.cleaned_data['body']
deadline_body = form.cleaned_data['deadline_body'] # Vyrobíme nová podle formsetu
feedback = form.cleaned_data['feedback'] for form in formset:
hodnoceni = m.Hodnoceni( hodnoceni = m.Hodnoceni(
problem=problem,
body=body,
deadline_body=deadline_body,
feedback=feedback,
reseni=reseni, reseni=reseni,
**form.cleaned_data,
) )
logger.info(f"Creating Hodnoceni: {hodnoceni}") logger.info(f"Creating Hodnoceni: {hodnoceni}")
hodnoceni.save() hodnoceni.save()
return redirect(success_url) return redirect(success_url)

Loading…
Cancel
Save