# -*- 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" )