You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

87 lines
2.9 KiB

# -*- coding: utf-8 -*-
from django.shortcuts import render, get_object_or_404
from django.views import generic
from prednasky.forms import NewPrednaskyForm
from prednasky.models import Seznam, Hlasovani, Prednaska
from django.shortcuts import HttpResponseRedirect
from django.core.exceptions import ObjectDoesNotExist
from models import Prednaska, Seznam, STAV_NAVRH
from seminar.models import Soustredeni
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
# obsluha formulare
if request.method == 'POST':
form = NewPrednaskyForm(request.POST, request.FILES)
if form.is_valid():
jmeno = form.cleaned_data['ucastnik']
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]
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()
return render(request, 'prednasky/Base.html',
{ 'form' : form,
'prednasky' : seznam,
})
def Prednaska_hotovo(request):
return render(request, 'prednasky/hotovo.html')
class MetaSeznamListView(generic.ListView):
model = Seznam
template_name = 'prednasky/metaseznam_prednasek.html'
class SeznamListView(generic.ListView):
template_name = 'prednasky/seznam_prednasek.html'
def get_queryset(self):
print self.kwargs
self.seznam = get_object_or_404(Seznam,id=self.kwargs["seznam"])
return Prednaska.objects.filter(seznamy = self.seznam)
def SeznamExportView(request, seznam):
u"""Vypíše výsledky hlasování ve formátu pro prologovský optimalizátor"""
# TODO zřejmě se nepoužívá, časem vyřadit? nahradit tabulkou vhodnější pro
# lidi?
hlasovani = Hlasovani.objects.filter(seznam=seznam)
prednasky = Prednaska.objects.filter(seznamy=seznam)
orgove = set(p.org for p in prednasky)
ucastnici = set(h.ucastnik for h in hlasovani)
for p in prednasky:
p.body = []
for u in ucastnici:
try:
p.body.append(hlasovani.get(ucastnik=u, prednaska=p).body)
except ObjectDoesNotExist:
# účastník nehlasoval
p.body.append("?")
for h in hlasovani:
h.ucastnik = hash(h.ucastnik)
return render(
request,
'prednasky/seznam_prednasek_export.txt',
{"hlasovani": hlasovani, "prednasky": prednasky, "orgove": orgove},
content_type="text/plain"
)