From 93f0e8af5ad9c4793dfdd9da7c7312ecc62759fb Mon Sep 17 00:00:00 2001 From: Jonas Havelka Date: Sat, 5 Sep 2020 20:46:22 +0200 Subject: [PATCH] =?UTF-8?q?Upgrade=20hlasov=C3=A1tka=20pro=20p=C5=99edn?= =?UTF-8?q?=C3=A1=C5=A1ky?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (jméno tahá z přihlášeného účtu, účastník může měnit svá hlasování) --- prednasky/templates/prednasky/base.html | 10 +++---- prednasky/views.py | 39 ++++++++++++++++--------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/prednasky/templates/prednasky/base.html b/prednasky/templates/prednasky/base.html index e23d7355..eea79ad2 100644 --- a/prednasky/templates/prednasky/base.html +++ b/prednasky/templates/prednasky/base.html @@ -17,19 +17,17 @@ Jak moc by ses chtěl(a) zúčastnit následujících přednášek?
{% csrf_token %} - {{form.as_table}} -
- {% for p in prednasky.prednaska_set.all %} + {% for p, h in prednasky %} {% if p.klicova %}{% endif%} {% endfor %} diff --git a/prednasky/views.py b/prednasky/views.py index 93cccf1b..87d696bc 100644 --- a/prednasky/views.py +++ b/prednasky/views.py @@ -4,41 +4,52 @@ from django.views import generic from django.shortcuts import HttpResponseRedirect from django.core.exceptions import ObjectDoesNotExist from django.db.models import Sum +from django.forms import Form from prednasky.models import Prednaska, Hlasovani, Seznam, STAV_NAVRH -from seminar.models import Soustredeni -from prednasky.forms import NewPrednaskyForm +from seminar.models import Soustredeni, Osoba def newPrednaska(request): # hlasovani se vztahuje k nejnovejsimu soustredeni sous = Soustredeni.objects.first() - seznam = Seznam.objects.filter(soustredeni = sous, stav = STAV_NAVRH).first() - print(seznam) + seznam = Seznam.objects.all().first() + osoba = Osoba.objects.filter(user=request.user).first() + ucastnik = osoba.plne_jmeno() + ' ' + str(osoba.id) # obsluha formulare if request.method == 'POST': - form = NewPrednaskyForm(request.POST, request.FILES) + form = Form(request.POST, request.FILES) if form.is_valid(): - jmeno = form.cleaned_data['ucastnik'] + # id z důvodu duplicitních jmen (přechod z jména na objekt Osoby nějak kape na tom, + # že všechna předchozí hlasování zde mají náhodný string…) + # TODO Změnit to na Osobu + + # TODO v následujících řádcích je zbytečně mnoho dotazů na QuerySet (pokud účastník hlasoval, hlasoval u všech) for i in request.POST: if i[0] == 'q': - hlasovani = Hlasovani() - print("q:"+i[1:]) - hlasovani.prednaska = Prednaska.objects.filter(pk = int(i[1:]))[0] + prednaska = Prednaska.objects.filter(pk=int(i[1:]))[0] + hlasovani = Hlasovani.objects.filter(ucastnik=ucastnik, prednaska=prednaska).first() + if not hlasovani: + hlasovani = Hlasovani() + hlasovani.prednaska = prednaska + hlasovani.ucastnik = ucastnik + hlasovani.seznam = seznam hlasovani.body = int(request.POST[i]) - hlasovani.ucastnik = jmeno - hlasovani.seznam = seznam hlasovani.save() # presmerovani na prave vzniklou galerii return HttpResponseRedirect('./hotovo') - else: - form = NewPrednaskyForm() + def prednaska_hodnoceni(prednaska): + h = Hlasovani.objects.filter(ucastnik=ucastnik, prednaska=prednaska).first() + if h: + return prednaska, h.body + else: + return prednaska, 0 return render( request, 'prednasky/base.html', - {'form': form, 'prednasky': seznam} + {'prednasky': map(prednaska_hodnoceni, seznam.prednaska_set.all())} )

{{p.anotace}}

{{p.obor}}
{{p.obtiznost}}
{{p.klicova}}
Hodnocení: - rozhodně nechci - je mi to jedno - rozhodně chci + rozhodně nechci + je mi to jedno + rozhodně chci