# -*- coding: utf-8 -*- from django.shortcuts import render, get_object_or_404 from django.views import generic from django.shortcuts import HttpResponseRedirect from django.core.exceptions import ObjectDoesNotExist from django.db.models import Sum from prednasky.models import Prednaska, Hlasovani, Seznam, STAV_NAVRH from seminar.models import Soustredeni from prednasky.forms import NewPrednaskyForm 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): self.seznam = get_object_or_404(Seznam, id=self.kwargs["seznam"]) prednasky = Prednaska.objects.filter(seznamy=self.seznam).order_by( 'org__user__first_name', 'org__user__last_name' ).annotate(body=Sum('hlasovani__body')) return prednasky 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" )