Upgrade hlasovátka pro přednášky
(jméno tahá z přihlášeného účtu, účastník může měnit svá hlasování)
This commit is contained in:
parent
2f3a24ec55
commit
93f0e8af5a
2 changed files with 29 additions and 20 deletions
|
@ -17,19 +17,17 @@ Jak moc by ses chtěl(a) zúčastnit následujících přednášek?
|
||||||
|
|
||||||
<form enctype="multipart/form-data" action="." method="post">
|
<form enctype="multipart/form-data" action="." method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<table>{{form.as_table}}
|
|
||||||
</table>
|
|
||||||
<table>
|
<table>
|
||||||
{% for p in prednasky.prednaska_set.all %}
|
{% for p, h in prednasky %}
|
||||||
<tr><td><label>{{p.org}}: <span style="font-size: 175%">{{p.nazev}}</span></label></td></tr>
|
<tr><td><label>{{p.org}}: <span style="font-size: 175%">{{p.nazev}}</span></label></td></tr>
|
||||||
<tr><td><p><i>{{p.anotace}}</i></p></td></tr>
|
<tr><td><p><i>{{p.anotace}}</i></p></td></tr>
|
||||||
<tr><td><label>Obor: </label> {{p.obor}}</td></tr>
|
<tr><td><label>Obor: </label> {{p.obor}}</td></tr>
|
||||||
<tr><td><label>Obtížnost: </label> {{p.obtiznost}}</td> </tr>
|
<tr><td><label>Obtížnost: </label> {{p.obtiznost}}</td> </tr>
|
||||||
{% if p.klicova %}<tr><td><label>Klíčová slova: </label> {{p.klicova}}</td></tr>{% endif%}
|
{% if p.klicova %}<tr><td><label>Klíčová slova: </label> {{p.klicova}}</td></tr>{% endif%}
|
||||||
<tr><td>Hodnocení:
|
<tr><td>Hodnocení:
|
||||||
<INPUT TYPE="radio" NAME="q{{p.pk}}" VALUE="-1"> rozhodně nechci
|
<INPUT TYPE="radio" NAME="q{{p.pk}}" VALUE="-1" {% if h == -1 %} CHECKED="checked" {% endif %} > rozhodně nechci
|
||||||
<INPUT TYPE="radio" NAME="q{{p.pk}}" VALUE="0" checked> je mi to jedno
|
<INPUT TYPE="radio" NAME="q{{p.pk}}" VALUE="0" {% if h == 0 %} CHECKED="checked" {% endif %}> je mi to jedno
|
||||||
<INPUT TYPE="radio" NAME="q{{p.pk}}" VALUE="1"> rozhodně chci
|
<INPUT TYPE="radio" NAME="q{{p.pk}}" VALUE="1" {% if h == 1 %} CHECKED="checked" {% endif %}> rozhodně chci
|
||||||
</td></tr>
|
</td></tr>
|
||||||
<tr><td> </td></tr>
|
<tr><td> </td></tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -4,41 +4,52 @@ from django.views import generic
|
||||||
from django.shortcuts import HttpResponseRedirect
|
from django.shortcuts import HttpResponseRedirect
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
from django.db.models import Sum
|
from django.db.models import Sum
|
||||||
|
from django.forms import Form
|
||||||
|
|
||||||
from prednasky.models import Prednaska, Hlasovani, Seznam, STAV_NAVRH
|
from prednasky.models import Prednaska, Hlasovani, Seznam, STAV_NAVRH
|
||||||
from seminar.models import Soustredeni
|
from seminar.models import Soustredeni, Osoba
|
||||||
from prednasky.forms import NewPrednaskyForm
|
|
||||||
|
|
||||||
def newPrednaska(request):
|
def newPrednaska(request):
|
||||||
# hlasovani se vztahuje k nejnovejsimu soustredeni
|
# hlasovani se vztahuje k nejnovejsimu soustredeni
|
||||||
sous = Soustredeni.objects.first()
|
sous = Soustredeni.objects.first()
|
||||||
seznam = Seznam.objects.filter(soustredeni = sous, stav = STAV_NAVRH).first()
|
seznam = Seznam.objects.all().first()
|
||||||
print(seznam)
|
osoba = Osoba.objects.filter(user=request.user).first()
|
||||||
|
ucastnik = osoba.plne_jmeno() + ' ' + str(osoba.id)
|
||||||
# obsluha formulare
|
# obsluha formulare
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
form = NewPrednaskyForm(request.POST, request.FILES)
|
form = Form(request.POST, request.FILES)
|
||||||
if form.is_valid():
|
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:
|
for i in request.POST:
|
||||||
if i[0] == 'q':
|
if i[0] == 'q':
|
||||||
hlasovani = Hlasovani()
|
prednaska = Prednaska.objects.filter(pk=int(i[1:]))[0]
|
||||||
print("q:"+i[1:])
|
hlasovani = Hlasovani.objects.filter(ucastnik=ucastnik, prednaska=prednaska).first()
|
||||||
hlasovani.prednaska = Prednaska.objects.filter(pk = int(i[1:]))[0]
|
if not hlasovani:
|
||||||
|
hlasovani = Hlasovani()
|
||||||
|
hlasovani.prednaska = prednaska
|
||||||
|
hlasovani.ucastnik = ucastnik
|
||||||
|
hlasovani.seznam = seznam
|
||||||
hlasovani.body = int(request.POST[i])
|
hlasovani.body = int(request.POST[i])
|
||||||
hlasovani.ucastnik = jmeno
|
|
||||||
hlasovani.seznam = seznam
|
|
||||||
hlasovani.save()
|
hlasovani.save()
|
||||||
|
|
||||||
# presmerovani na prave vzniklou galerii
|
# presmerovani na prave vzniklou galerii
|
||||||
return HttpResponseRedirect('./hotovo')
|
return HttpResponseRedirect('./hotovo')
|
||||||
|
|
||||||
else:
|
def prednaska_hodnoceni(prednaska):
|
||||||
form = NewPrednaskyForm()
|
h = Hlasovani.objects.filter(ucastnik=ucastnik, prednaska=prednaska).first()
|
||||||
|
if h:
|
||||||
|
return prednaska, h.body
|
||||||
|
else:
|
||||||
|
return prednaska, 0
|
||||||
|
|
||||||
return render(
|
return render(
|
||||||
request,
|
request,
|
||||||
'prednasky/base.html',
|
'prednasky/base.html',
|
||||||
{'form': form, 'prednasky': seznam}
|
{'prednasky': map(prednaska_hodnoceni, seznam.prednaska_set.all())}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue