from django.shortcuts import get_object_or_404, render from django.http import HttpResponseRedirect from django.core.urlresolvers import reverse from django.views import generic from django.utils.translation import ugettext as _ from django.http import Http404 from .models import Problem, Cislo, Reseni, VysledkyKCislu, Nastaveni, Rocnik, Soustredeni, Organizator def AktualniZadaniView(request): nastaveni = get_object_or_404(Nastaveni) return render(request, 'seminar/zadani/AktualniZadani.html', {'nastaveni' : nastaveni, }, ) # Co je M&M class CojemamOrganizatoriView(generic.ListView): model = Organizator template_name='seminar/cojemam/organizatori.html' class CislaView(generic.ListView): model = Rocnik template_name='seminar/archiv/cisla.html' class RocnikView(generic.DetailView): model = Rocnik template_name = 'seminar/archiv/rocnik.html' # Vlastni ziskavani objektu z databaze podle (Rocnik.rocnik) def get_object(self, queryset=None): if queryset is None: queryset = self.get_queryset() rocnik_arg = self.kwargs.get('rocnik') queryset = queryset.filter(rocnik=rocnik_arg) try: obj = queryset.get() except queryset.model.DoesNotExist: raise Http404(_("No %(verbose_name)s found matching the query") % {'verbose_name': queryset.model._meta.verbose_name}) return obj class SoustredeniView(generic.DetailView): model = Soustredeni template_name = 'seminar/archiv/soustredeni.html' class ProblemView(generic.DetailView): model = Problem template_name = 'seminar/archiv/problem.html' class RadekVysledkovky(object): pass class CisloView(generic.DetailView): model = Cislo template_name = 'seminar/archiv/cislo.html' # Vlastni ziskavani objektu z databaze podle (Rocnik.rocnik) def get_object(self, queryset=None): if queryset is None: queryset = self.get_queryset() rocnik_arg = self.kwargs.get('rocnik') cislo_arg = self.kwargs.get('cislo') queryset = queryset.filter(rocnik__rocnik=rocnik_arg, cislo=cislo_arg) try: obj = queryset.get() except queryset.model.DoesNotExist: raise Http404(_("No %(verbose_name)s found matching the query") % {'verbose_name': queryset.model._meta.verbose_name}) return obj def get_context_data(self, **kwargs): context = super(CisloView, self).get_context_data(**kwargs) vysledky = VysledkyKCislu.objects.filter(cislo = context['cislo']).order_by('-body_celkem').select_related("resitel") reseni = Reseni.objects.filter(cislo_body = context['cislo']).select_related("resitel") problemy = sorted(list(set([r.problem for r in reseni])), key=lambda x:(0 if x.typ==Problem.TYP_ULOHA else 1,x.kod)) problem_index = {} for i in range(len(problemy)): problem_index[problemy[i].id] = i vysledky_resitele = {} vysledkovka = [] posledni_body = 100000 for vi in range(len(vysledky)): v = vysledky[vi] tv = RadekVysledkovky() tv.resitel = v.resitel tv.vysledek = v tv.body = ['']*len(problemy) tv.poradi = '' if posledni_body > v.body_celkem: posledni_body = v.body_celkem tv.poradi = vi + 1 vysledky_resitele[v.resitel.id] = tv vysledkovka.append(tv) for r in reseni: vysledky_resitele[r.resitel.id].body[problem_index[r.problem.id]] = r.body context['vysledkovka'] = vysledkovka context['problemy'] = problemy return context