Testovaci view na cislo a vysledkovka s daty z VIEW

This commit is contained in:
Tomas Gavenciak 2015-03-24 01:13:34 +01:00
parent 1421438c9c
commit 557c1d55e1
3 changed files with 70 additions and 1 deletions

View file

@ -0,0 +1,32 @@
{% extends "base.html" %}
{% load staticfiles sekizai_tags %}
{% block content %}
<div>
<h2>Číslo {{ cislo }} [id {{ cislo.id}}]</h2>
<table class='vysledkovka'>
<tr class='border-b'>
<th class='border-r'>#
<th class='border-r'>Jméno
{% for p in problemy %}
<th class='border-r'>{{ p.cislo_zadani.cislo }}.{{ p.kod }}
{% endfor %}
<th class='border-r'>Sum
<th>Celkem
{% for rv in vysledkovka %}
<tr>
<td class='border-r'>{{ rv.poradi }}
<th class='border-r'>{{ rv.resitel.plne_jmeno }} [{{ rv.resitel.id }}]
{% for b in rv.body %}
<td class='border-r'>{{ b }}
{% endfor %}
<td class='border-r'>{{ rv.vysledek.body |default:0 }}
<td>{{ rv.vysledek.body_celkem }}
</tr>
{% endfor %}
</table>
</div>
{% endblock content %}

View file

@ -3,4 +3,5 @@ from . import views
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'^problem/(?P<pk>\d+)/$', views.ProblemView.as_view(), name='problem'), url(r'^problem/(?P<pk>\d+)/$', views.ProblemView.as_view(), name='problem'),
url(r'^cislo/(?P<pk>\d+)/$', views.CisloView.as_view(), name='cislo'),
) )

View file

@ -2,7 +2,7 @@ from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.views import generic from django.views import generic
from .models import Problem, Cislo from .models import Problem, Cislo, Reseni, VysledkyKCislu
# Create your views here. # Create your views here.
@ -10,8 +10,44 @@ class ProblemView(generic.DetailView):
model = Problem model = Problem
template_name = 'seminar/problem.html' template_name = 'seminar/problem.html'
class RadekVysledkovky(object):
pass
class CisloView(generic.DetailView): class CisloView(generic.DetailView):
model = Cislo model = Cislo
template_name = 'seminar/cislo.html' template_name = 'seminar/cislo.html'
def get_context_data(self, **kwargs):
context = super(CisloView, self).get_context_data(**kwargs)
vysledky = VysledkyKCislu.objects.filter(cislo = context['cislo']).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: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