Dokončena oprava výsledkovek čísla a ročníku - generování TeXu.
This commit is contained in:
		
							parent
							
								
									03696d79ab
								
							
						
					
					
						commit
						c499d823f9
					
				
					 5 changed files with 57 additions and 140 deletions
				
			
		|  | @ -1,9 +1,9 @@ | |||
| \setlength{\tabcolsep}{3pt} | ||||
| \begin{longtable}{|r|l|c|r|{% for p in problemy %}c@{\hskip.5em}{% endfor %}|r|r|}\hline | ||||
| & & & & \multicolumn{ {{ problemy|length}} }{c|}{\textbf{Úlohy}} & & \\\textbf{Poř.}& \textbf{Jméno}& \textbf{R.}& \raisebox{0.7mm}{$\sum_{-1}$}& {% for p in problemy %}{% if p.typ == "uloha" %}\textbf{r{{p.kod}}}&{% elif p.typ == "tema" %}\textbf{t{{p.kod}}}&{% else  %}\textbf{ {{p.kod}} }&{% endif %}{% endfor %}\raisebox{0.7mm}{$\sum_0$}&\raisebox{0.7mm}{$\sum_1$}\\\hline | ||||
| & & & & \multicolumn{ {{ problemy|length}} }{c|}{\textbf{Úlohy}} & & \\\textbf{Poř.}& \textbf{Jméno}& \textbf{R.}& \raisebox{0.7mm}{$\sum_{-1}$}& {% for p in problemy %}\textbf{ {{ p.kod_v_rocniku }} }&{% endfor %}\raisebox{0.7mm}{$\sum_0$}&\raisebox{0.7mm}{$\sum_1$}\\\hline | ||||
| \endhead | ||||
| \hline | ||||
| \endfoot  | ||||
| {% for rv in vysledkovka %}{{rv.poradi}}&{% if rv.titul %}\titul{ {{ rv.titul}}}{% endif %}{{rv.resitel.inicial_krestni}} {{rv.resitel.prijmeni}}&{{rv.resitel.rocnik|default:""}}&{{rv.body_celkem_odjakziva}}&{% for b in rv.body_ulohy %}{{b}}&{% endfor %}{{rv.body_cislo}}&{{rv.body_celkem_rocnik|default:0}}\\ | ||||
| {% for rv in radky_vysledkovky %}{{rv.poradi}}&{% if rv.titul %}\titul{ {{ rv.titul}}}{% endif %}{{rv.resitel.osoba.jmeno|slice:":1"}}. {{rv.resitel.osoba.prijmeni}}&{{rv.rocnik_resitele|default:""}}&{{rv.body_celkem_odjakziva}}&{% for b in rv.body_problemy_sezn %}{{b}}&{% endfor %}{{rv.body_cislo}}&{{rv.body_rocnik|default:0}}\\ | ||||
| {% endfor %} | ||||
| \end{longtable} | ||||
|  |  | |||
|  | @ -1,13 +1,12 @@ | |||
| {% with lb="{" %} | ||||
| {% with rb="}" %} | ||||
| \setlength{\tabcolsep}{3pt} | ||||
| \begin{longtable}{|r|l|c|r|{% for cislo in vysledkovka.cisla %}c{% if not forloop.last %}@{\hskip.5em}{% endif %}{% endfor %}|r|} | ||||
| \hline | ||||
| & & & & \multicolumn{{ lb }}{{ vysledkovka.cisla|length }}}{c|}{\textbf{Číslo}} & \\\textbf{Poř.} & \textbf{Jméno} & \textbf{R.} & \raisebox{0.7mm}{$\sum_{-1}$} & {% for cislo in vysledkovka.cisla %}\textbf{{ lb }}{{ cislo.cislo }}{{ rb }} & {% endfor %}\raisebox{0.7mm}{$\sum_1$} \\\hline | ||||
| \begin{longtable}{|r|l|c|r|{% for cislo in cisla %}c{% if not forloop.last %}@{\hskip.5em}{% endif %}{% endfor %}|r|}\hline | ||||
| & & & & \multicolumn{{ lb }}{{ cisla|length }}}{c|}{\textbf{Číslo}} & \\\textbf{Poř.} & \textbf{Jméno} & \textbf{R.} & \raisebox{0.7mm}{$\sum_{-1}$} & {% for cislo in cisla %}\textbf{{ lb }}{{ cislo.poradi }}{{ rb }} & {% endfor %}\raisebox{0.7mm}{$\sum_1$} \\\hline | ||||
| \endhead | ||||
| \hline | ||||
| \endfoot | ||||
| {% for rv in radky_vysledkovky %}{{ rv.poradi }} & {% if rv.titul %}\titul{{ lb }}{{ rv.titul }}}~{% endif %}{{ rv.resitel.osoba.jmeno|slice:":1" }}.~{{ rv.resitel.osoba.prijmeni }} & {% if rv.resitel.rocnik %}{{ rv.resitel.rocnik }}.{% endif %} & {{ rv.body_odjakziva }} {% for b in rv.body_cisla_sezn %} & {{ b }}{% endfor %} & {{ rv.body_rocnik }} \\ | ||||
| {% for rv in radky_vysledkovky %}{{ rv.poradi }} & {% if rv.titul %}\titul{{ lb }}{{ rv.titul }}}~{% endif %}{{ rv.resitel.osoba.jmeno|slice:":1" }}.~{{ rv.resitel.osoba.prijmeni }} & {% if rv.rocnik_resitele %}{{ rv.rocnik_resitele }}{% endif %} & {{ rv.body_celkem_odjakziva }} {% for b in rv.body_cisla_sezn %} & {{ b }}{% endfor %} & {{ rv.body_rocnik }} \\ | ||||
| {% endfor %}\end{longtable} | ||||
| {% endwith %} | ||||
| {% endwith %} | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ | |||
|         {{ rv.titul }}<sup>MM</sup> | ||||
|       {% endif %} | ||||
|       {{ rv.resitel.osoba.plne_jmeno }} | ||||
|     <td class='border-r'>{{ rv.resitel.rocnik }} | ||||
|     <td class='border-r'>{{ rv.rocnik_resitele }} | ||||
|     <td class='border-r'>{{ rv.body_celkem_odjakziva }} | ||||
|     {% for b in rv.body_cisla_sezn %} | ||||
|     <td class='border-r'>{{ b }} | ||||
|  |  | |||
|  | @ -75,13 +75,15 @@ urlpatterns = [ | |||
| 	path('aesop-export/index.csv', export.ExportIndexView.as_view(), name='seminar_export_index'), | ||||
| 
 | ||||
| 	# Stranky viditelne pouze pro orgy: | ||||
| 	#path( | ||||
| 	#    'rocnik/(?P<rocnik>\d+)/vysledkovka.tex', | ||||
| 	#    staff_member_required(views.RocnikVysledkovkaView.as_view()), | ||||
| 	#    name='seminar_cislo_vysledkovka' | ||||
| 	#), | ||||
| 	#path('cislo/(?P<rocnik>\d+).(?P<cislo>[0-9-]+)/vysledkovka.tex', | ||||
| 	 #   staff_member_required(views.CisloVysledkovkaView.as_view()), name='seminar_cislo_vysledkovka'), | ||||
| 	path( | ||||
| 	    'rocnik/<int:rocnik>/vysledkovka.tex', | ||||
| 	    staff_member_required(views.RocnikVysledkovkaView.as_view()), | ||||
| 	    name='seminar_rocnik_vysledkovka' | ||||
| 	), | ||||
| 	path('cislo/<int:rocnik>.<int:cislo>/vysledkovka.tex', | ||||
| 	    staff_member_required(views.CisloVysledkovkaView.as_view()),  | ||||
| 	    name='seminar_cislo_vysledkovka' | ||||
| 	), | ||||
| 	path('cislo/<int:rocnik>.<int:cislo>/obalky.pdf', | ||||
| 		staff_member_required(views.cisloObalkyView), name='seminar_cislo_obalky'), | ||||
| 
 | ||||
|  |  | |||
|  | @ -39,6 +39,7 @@ import traceback | |||
| import sys | ||||
| import csv | ||||
| import logging | ||||
| import time | ||||
| 
 | ||||
| 
 | ||||
| def verejna_temata(rocnik): | ||||
|  | @ -536,26 +537,26 @@ def body_resitelu_odjakziva(rocnik, resitele): | |||
| 	# Body za posledních 10 let je dobrá aproximace pro naše potřeby (výsledkovka | ||||
| 	# s aktivními řešiteli) | ||||
|          | ||||
| 	body_pred_roky = [] | ||||
| 	rok = rocnik.prvni_rok | ||||
| 	rocniky = Rocnik.objects.filter(prvni_rok__gt=rok-11) | ||||
| 	for roc in rocniky:	 | ||||
| 		body_pred_roky.append(body_resitelu_za_rocnik(roc, resitele)) | ||||
|          | ||||
| 	for r in resitele: | ||||
| 		for i in range(0,10): | ||||
| 			body_odjakziva[str(r.id)] += body_pred_roky[i][str(r.id)] | ||||
| 	#body_pred_roky = [] | ||||
| 	#rok = rocnik.prvni_rok | ||||
| 	#rocniky = Rocnik.objects.filter(prvni_rok__gt=rok-11) | ||||
| 	#for roc in rocniky:	 | ||||
| 	#	body_pred_roky.append(body_resitelu_za_rocnik(roc, resitele)) | ||||
|         # | ||||
| 	#for r in resitele: | ||||
| 	#	for i in range(0,10): | ||||
| 	#		body_odjakziva[str(r.id)] += body_pred_roky[i][str(r.id)] | ||||
| 
 | ||||
| 
 | ||||
| # Nasledující řešení je sice správné, ale moc pomalé: | ||||
| # (důsledek toho, že dotazy na joinování databázových tabulek jsou kvadratické) | ||||
| #	for res in Reseni.objects.prefetch_related('resitele', 'hodnoceni_set').all(): | ||||
| #		for r in res.resitele.all(): | ||||
| #			# daný řešitel nemusí být v naší podmnožině | ||||
| #			if r not in resitele: continue | ||||
| #			 | ||||
| #			for hodn in res.hodnoceni_set.all(): | ||||
| #				pricti_body(body_odjakziva, r, hodn.body) | ||||
| 	for res in Reseni.objects.prefetch_related('resitele', 'hodnoceni_set').all(): | ||||
| 		for r in res.resitele.all(): | ||||
| 			# daný řešitel nemusí být v naší podmnožině | ||||
| 			if r not in resitele: continue | ||||
| 			 | ||||
| 			for hodn in res.hodnoceni_set.all(): | ||||
| 				pricti_body(body_odjakziva, r, hodn.body) | ||||
| 	return body_odjakziva | ||||
| 
 | ||||
| # vrátí slovník řešitel:body obsahující počty bodů zadaných řešitelů za daný ročník | ||||
|  | @ -566,24 +567,28 @@ def body_resitelu_za_rocnik(rocnik, aktivni_resitele): | |||
| 		body_za_rocnik[str(ar.id)] = 0 | ||||
| 	 | ||||
| 	# spočítáme body řešitelům přes všechna řešení s hodnocením v daném ročníku | ||||
| 	print("Před dotazem:{}".format(time.time()))	 | ||||
| 	reseni = Reseni.objects.prefetch_related('resitele', 'hodnoceni_set').filter(hodnoceni__cislo_body__rocnik=rocnik) | ||||
| 	print("Po dotazu:{}".format(time.time()))	 | ||||
| 	for res in reseni: | ||||
| 		for resitel in res.resitele.all(): | ||||
| 			for hodn in res.hodnoceni_set.all(): | ||||
| 				pricti_body(body_za_rocnik, resitel, hodn.body) | ||||
| 	print("Po for-cyklu:{}".format(time.time()))	 | ||||
| 	return body_za_rocnik | ||||
| 
 | ||||
| class RadekVysledkovkyRocniku(object): | ||||
| 	"""Obsahuje věci, které se hodí vědět při konstruování výsledkovky. | ||||
| 	Umožňuje snazší práci v templatu (lepší, než seznam).""" | ||||
| 
 | ||||
| 	def __init__(self, poradi, resitel, body_cisla_sezn, body_rocnik, body_odjakziva): | ||||
| 	def __init__(self, poradi, resitel, body_cisla_sezn, body_rocnik, body_odjakziva, rok): | ||||
| 		self.poradi = poradi | ||||
| 		self.resitel = resitel | ||||
| 		self.rocnik_resitele = resitel.rocnik(rok) | ||||
| 		self.body_rocnik = body_rocnik | ||||
| 		self.body_celkem_odjakziva = body_odjakziva | ||||
| 		self.body_cisla_sezn = body_cisla_sezn | ||||
| 		self.titul = resitel.get_titul(body_odjakziva) | ||||
| 		elf.titul = resitel.get_titul(body_odjakziva) | ||||
| 
 | ||||
| def vysledkovka_rocniku(rocnik, jen_verejne=True): | ||||
| 	"""Přebírá ročník (např. context["rocnik"]) a vrací výsledkovou listinu ve | ||||
|  | @ -632,7 +637,8 @@ def vysledkovka_rocniku(rocnik, jen_verejne=True): | |||
| 			Resitel.objects.get(id=ar_id), # řešitel (z id) | ||||
| 			body_cisla_sezn, # seznam bodů za čísla | ||||
| 			setrizene_body[i], # body za ročník (spočítané výše s pořadím) | ||||
| 			resitel_odjakzivabody_slov[ar_id]) # body odjakživa | ||||
| 			resitel_odjakzivabody_slov[ar_id], # body odjakživa | ||||
| 			rocnik) # ročník semináře pro získání ročníku řešitele | ||||
| 		print("{}: číslobody - {}, ročníkbody - {}," | ||||
| 			"odjakživabody - {}".format(radek.resitel, radek.body_cisla_sezn,  | ||||
| 			radek.body_rocnik, radek.body_celkem_odjakziva)) | ||||
|  | @ -643,59 +649,6 @@ def vysledkovka_rocniku(rocnik, jen_verejne=True): | |||
| 	return radky_vysledkovky | ||||
| 	 | ||||
| 
 | ||||
| 	#vyberu vsechny vysledky z rocniku | ||||
| #	cisla_v_rocniku = VysledkyKCisluZaRocnik.objects.filter(cislo__rocnik=rocnik).order_by('cislo') | ||||
| #	if jen_verejne: | ||||
| #		cisla_v_rocniku = cisla_v_rocniku.filter(cislo__verejna_vysledkovka=True) | ||||
| # | ||||
| #	#pokud žádné nejsou, výsledkovka se nezobrazí | ||||
| #	if not cisla_v_rocniku: | ||||
| #		return None | ||||
| # | ||||
| #	#vybere vsechny vysledky z posledniho (verejneho) cisla a setridi sestupne dle bodu | ||||
| #	vysledky = list(cisla_v_rocniku.filter(cislo = cisla_v_rocniku[0].poradi).order_by('-body', 'resitel__prijmeni', 'resitel__jmeno').select_related('resitel')) | ||||
| # | ||||
| #	class Vysledkovka: | ||||
| #		def __init__(self): | ||||
| #			self.rocnik = rocnik.rocnik | ||||
| #			self.radky = [] | ||||
| #			self.cisla = [] | ||||
| # | ||||
| #	vysledkovka = Vysledkovka() | ||||
| #	vysledkovka.cisla = (rocnik.verejne_vysledkovky_cisla() if jen_verejne else rocnik.cisla.all().order_by('cislo')) | ||||
| # | ||||
| #	# doplníme některé údaje do řádků výsledkovky pro řešitele ve skupině | ||||
| #	for poradi, v in zip(sloupec_s_poradim(vysledky), vysledky): | ||||
| #		v.poradi = poradi | ||||
| #		v.resitel.rocnik = v.resitel.rocnik(rocnik) | ||||
| # | ||||
| #		verejne_vysl_odjakziva = VysledkyKCisluOdjakziva.objects.filter(cislo__rocnik=rocnik, cislo=cisla_v_rocniku[0].poradi) | ||||
| #		if jen_verejne: | ||||
| #			verejne_vysl_odjakziva = verejne_vysl_odjakziva.filter(cislo__verejna_vysledkovka=True) | ||||
| # | ||||
| #		v.body_odjakziva = verejne_vysl_odjakziva.filter(resitel = v.resitel)[0].body | ||||
| #		v.titul = v.resitel.get_titul(v.body_odjakziva) | ||||
| #		v.body_rocnik = v.body | ||||
| #		v.body_cisla = [] | ||||
| # | ||||
| #		#pokud pro dany rok a cislo nema resitel vysledky, ma defaultne 0 | ||||
| #		for cis in vysledkovka.cisla: | ||||
| #			if not jen_verejne or cis.verejna_vysledkovka: | ||||
| #				#seznam vysledku se spravnym rocnikem a cislem pro resitele | ||||
| #				#zobrazim jen je-li vysledkovka verejna | ||||
| #				body_za_cislo = VysledkyZaCislo.objects.filter(cislo__rocnik=rocnik).filter(cislo = cis).filter(resitel = v.resitel) | ||||
| #				if body_za_cislo: | ||||
| #					#neprazdne vysledky by mely obsahovat prave jeden vysledek | ||||
| #					v.body_cisla.append(body_za_cislo[0].body) | ||||
| #				else: | ||||
| #					#resitel nema za cislo body | ||||
| #					v.body_cisla.append(0) | ||||
| # | ||||
| #		vysledkovka.radky.append(v) | ||||
| # | ||||
| #	return vysledkovka | ||||
| 
 | ||||
| 
 | ||||
| class RocnikView(generic.DetailView): | ||||
| 	model = Rocnik | ||||
| 	template_name = 'seminar/archiv/rocnik.html' | ||||
|  | @ -723,7 +676,8 @@ class RocnikView(generic.DetailView): | |||
| 		context['cisla_s_neverejnymi'] = cisla_rocniku(context["rocnik"], jen_verejne=False) | ||||
| 		context['cisla'] = cisla_rocniku(context["rocnik"]) | ||||
| 		context['radky_vysledkovky'] = vysledkovka_rocniku(context["rocnik"]) | ||||
| 		context['radky_vysledkovky_s_neverejnymi'] = vysledkovka_rocniku(context["rocnik"], jen_verejne=False) | ||||
| 		context['radky_vysledkovky_s_neverejnymi'] = vysledkovka_rocniku( | ||||
| 			context["rocnik"], jen_verejne=False) | ||||
| 		context['hlavni_problemy_v_rocniku'] = hlavni_problemy_rocniku(context["rocnik"]) | ||||
| 		context['hlavni_problemy_v_rocniku_s_neverejnymi'] = hlavni_problemy_rocniku(context["rocnik"], jen_verejne=False) | ||||
| 
 | ||||
|  | @ -754,8 +708,9 @@ class RadekVysledkovkyCisla(object): | |||
| 	Umožňuje snazší práci v templatu (lepší, než seznam).""" | ||||
| 
 | ||||
| 	def __init__(self, poradi, resitel, body_problemy_sezn,  | ||||
| 				body_cislo, body_rocnik, body_odjakziva): | ||||
| 				body_cislo, body_rocnik, body_odjakziva, rok): | ||||
| 		self.resitel = resitel | ||||
| 		self.rocnik_resitele = resitel.rocnik(rok) | ||||
| 		self.body_cislo = body_cislo | ||||
| 		self.body_rocnik = body_rocnik | ||||
| 		self.body_celkem_odjakziva = body_odjakziva | ||||
|  | @ -826,7 +781,6 @@ def secti_body_za_cislo(cislo, aktivni_resitele, hlavni_problemy=None): | |||
| 					pricti_body(cislobody, resitel, body) | ||||
| 					pricti_body(nadproblem_slovnik, resitel, body) | ||||
| 	return hlavni_problemy_slovnik, cislobody | ||||
| 		 | ||||
| 
 | ||||
| def vysledkovka_cisla(cislo, context=None): | ||||
| 	if context is None: | ||||
|  | @ -874,14 +828,14 @@ def vysledkovka_cisla(cislo, context=None): | |||
| 			problemy, # seznam bodů za hlavní problémy čísla | ||||
| 			cislobody[ar_id], # body za číslo | ||||
| 			setrizeni_resitele_body[i], # body za ročník (spočítané výše s pořadím) | ||||
| 			resitel_odjakzivabody_slov[ar_id]) # body odjakživa | ||||
| 			resitel_odjakzivabody_slov[ar_id], # body odjakživa | ||||
| 			cislo.rocnik) # ročník semináře pro zjištění ročníku řešitele | ||||
| 		print("{}: body za problémy - {}, číslobody - {}, ročníkbody - {}, odjakživabody - {}".format(radek.resitel,  | ||||
| 			radek.body_problemy_sezn, radek.body_cislo, radek.body_rocnik, radek.body_celkem_odjakziva)) | ||||
| 		radky_vysledkovky.append(radek) | ||||
| 		print("Přikládám {}-tý řádek.".format(i)) | ||||
| 		i += 1 | ||||
| 
 | ||||
| 	print("Následuje předávání do kontextu.") | ||||
| 	# vytahané informace předáváme do kontextu | ||||
| 	context['cislo'] = cislo | ||||
| 	context['radky_vysledkovky'] = radky_vysledkovky | ||||
|  | @ -917,43 +871,6 @@ class CisloView(generic.DetailView): | |||
| 		# vrátíme context (aktuálně obsahuje jen věci ohledně výsledkovky | ||||
| 		return vysledkovka_cisla(cislo, context) | ||||
| 
 | ||||
| #		problemy = sorted(set(r.problem for r in reseni), key=lambda x:(poradi_typu[x.typ], x.kod_v_rocniku())) | ||||
| #		#setridi problemy podle typu a poradi zadani | ||||
| #		problem_index = {} | ||||
| #		for i in range(len(problemy)): | ||||
| #			#umoznuje zjistit index podle id problemu | ||||
| # | ||||
| #		vysledky_resitele = {} | ||||
| #		vysledkovka = [] | ||||
| # | ||||
| #		# doplníme některé údaje do řádků výsledkovky pro řešitele ve skupině | ||||
| #		for poradi, v in zip(sloupec_s_poradim(vysledky), vysledky): | ||||
| #			v.poradi = poradi | ||||
| #			v.body_celkem_rocnik = v.body | ||||
| #			v.body_celkem_odjakziva = VysledkyKCisluOdjakziva.objects.get(resitel=v.resitel, cislo=context['cislo']).body | ||||
| #			v.resitel.rocnik = v.resitel.rocnik(v.cislo.rocnik) | ||||
| # | ||||
| #			# je tady '', aby se nezobrazovala 0, pokud se řešitel o řešení úlohy ani nepokusil | ||||
| #			v.body_ulohy = [''] * len(problemy) | ||||
| # | ||||
| #			v.titul = v.resitel.get_titul(v.body_celkem_odjakziva) | ||||
| # | ||||
| #			body_cislo_q = VysledkyZaCislo.objects.filter(resitel=v.resitel, cislo=context['cislo']) | ||||
| #			v.body_cislo = body_cislo_q[0].body if body_cislo_q else 0 | ||||
| # | ||||
| #			vysledkovka.append(v) | ||||
| # | ||||
| #			# připravíme si odkaz na řádek, abychom do něj mohli doplnit body za jednotlivé úlohy | ||||
| #			vysledky_resitele[v.resitel.id] = v | ||||
| # | ||||
| #		# za každé řešení doplníme k příslušnému řešiteli a úloze body | ||||
| #		for r in reseni: | ||||
| #			vysledky_resitele[r.resitel.id].body_ulohy[problem_index[r.problem.id]] = r.body | ||||
| # | ||||
| #		context['vysledkovka'] = vysledkovka | ||||
| #		context['problemy'] = problemy | ||||
| #		context['v_cisle_zadane'] = v_cisle_zadane | ||||
| #		context['resene_problemy'] = resene_problemy | ||||
| 
 | ||||
| class ArchivTemataView(generic.ListView): | ||||
| 	model = Problem | ||||
|  | @ -962,19 +879,18 @@ class ArchivTemataView(generic.ListView): | |||
| 
 | ||||
| ### Generovani vysledkovky | ||||
| 
 | ||||
| #class CisloVysledkovkaView(CisloView):i | ||||
| #	poradi | titul. jmeno prijmeni | ulohy | za cislo | celkem | odjakziva | ||||
| # | ||||
| # | ||||
| # | ||||
| #	model = Cislo | ||||
| #	template_name = 'seminar/archiv/cislo_vysledkovka.tex' | ||||
| #	#content_type = 'application/x-tex; charset=UTF8' | ||||
| #	#umozni rovnou stahnout TeXovsky dokument | ||||
| #	content_type = 'text/plain; charset=UTF8' | ||||
| #	#vypise na stranku textovy obsah vyTeXane vysledkovky k okopirovani | ||||
| # | ||||
| class CisloVysledkovkaView(CisloView): | ||||
| 	"View vytvořené pro stránku zobrazující výsledkovku čísla v TeXu." | ||||
| 
 | ||||
| 	model = Cislo | ||||
| 	template_name = 'seminar/archiv/cislo_vysledkovka.tex' | ||||
| 	#content_type = 'application/x-tex; charset=UTF8' | ||||
| 	#umozni rovnou stahnout TeXovsky dokument | ||||
| 	content_type = 'text/plain; charset=UTF8' | ||||
| 	#vypise na stranku textovy obsah vyTeXane vysledkovky k okopirovani | ||||
| 
 | ||||
| class RocnikVysledkovkaView(RocnikView): | ||||
| 	"View vytvořené pro stránku zobrazující výsledkovku ročníku v TeXu." | ||||
| 	model = Rocnik | ||||
| 	template_name = 'seminar/archiv/rocnik_vysledkovka.tex' | ||||
| 	#content_type = 'application/x-tex; charset=UTF8' | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Anet
						Anet