From 69c0bce38a13e493e97cc134e9355daad61a64bb Mon Sep 17 00:00:00 2001 From: "Pavel \"LEdoian\" Turinsky" Date: Mon, 20 Sep 2021 04:17:04 +0200 Subject: [PATCH] =?UTF-8?q?Upraviteln=C3=A1=20pozn=C3=A1mka?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/forms.py | 5 +++++ seminar/templates/seminar/odevzdavatko/detail.html | 7 +++---- seminar/views/odevzdavatko.py | 11 ++++++++--- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/seminar/forms.py b/seminar/forms.py index 6bcfce6a..49533d77 100644 --- a/seminar/forms.py +++ b/seminar/forms.py @@ -316,6 +316,11 @@ OhodnoceniReseniFormSet = formset_factory(JednoHodnoceniForm, extra = 0, ) +class PoznamkaReseniForm(forms.ModelForm): + class Meta: + model = m.Reseni + fields = ('poznamka',) + # FIXME: Ideálně by mělo být součástí třídy níž, ale neumím to udělat DATE_FORMAT = '%Y-%m-%d' diff --git a/seminar/templates/seminar/odevzdavatko/detail.html b/seminar/templates/seminar/odevzdavatko/detail.html index 4fc3ffa4..17be0e0f 100644 --- a/seminar/templates/seminar/odevzdavatko/detail.html +++ b/seminar/templates/seminar/odevzdavatko/detail.html @@ -85,15 +85,14 @@ $(document).ready(function(){

Žádné přílohy

{% endif %} +
{# Poznámka #} -{% if object.poznamka %}

Poznámka:

-{{ object.poznamka }} -{% endif %} +

{{ poznamka_form.poznamka }}

{# Hodnocení: #}

Hodnocení:

- +
{% csrf_token %} {{ form.management_form }}
diff --git a/seminar/views/odevzdavatko.py b/seminar/views/odevzdavatko.py index dd926ea7..ce86958c 100644 --- a/seminar/views/odevzdavatko.py +++ b/seminar/views/odevzdavatko.py @@ -206,9 +206,9 @@ class DetailReseniView(DetailView): template_name = 'seminar/odevzdavatko/detail.html' def aktualni_hodnoceni(self): - reseni = get_object_or_404(m.Reseni, id=self.kwargs['pk']) + self.reseni = get_object_or_404(m.Reseni, id=self.kwargs['pk']) result = [] # Slovníky s klíči problem, body, cislo_body -- initial data pro f.OhodnoceniReseniFormSet - for hodn in m.Hodnoceni.objects.filter(reseni=reseni): + for hodn in m.Hodnoceni.objects.filter(reseni=self.reseni): result.append( {"problem": hodn.problem, "body": hodn.body, @@ -221,6 +221,7 @@ class DetailReseniView(DetailView): ctx['form'] = f.OhodnoceniReseniFormSet( initial = self.aktualni_hodnoceni() ) + ctx['poznamka_form'] = f.PoznamkaReseniForm(instance=self.reseni) return ctx @@ -233,10 +234,14 @@ def hodnoceniReseniView(request, pk, *args, **kwargs): # FIXME: Použit initial i tady a nebastlit hodnocení tak nízkoúrovňově # Also: https://docs.djangoproject.com/en/2.2/topics/forms/modelforms/#django.forms.ModelForm 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(): + if formset.is_valid() and poznamka_form.is_valid(): 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}")