Obalky v Djangu.
This commit is contained in:
		
							parent
							
								
									1f64739ada
								
							
						
					
					
						commit
						b5a9d677e5
					
				
					 5 changed files with 1758 additions and 0 deletions
				
			
		
							
								
								
									
										1603
									
								
								seminar/static/seminar/lisak.eps
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1603
									
								
								seminar/static/seminar/lisak.eps
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										103
									
								
								seminar/templates/seminar/archiv/obalky.tex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								seminar/templates/seminar/archiv/obalky.tex
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,103 @@ | |||
| {% autoescape off %} | ||||
| {% load staticfiles %} | ||||
| {% load tex %} | ||||
| \input czech.sty | ||||
| \input epsf | ||||
| \special{landscape} | ||||
| \nopagenumbers | ||||
| \hoffset=-1in | ||||
| \voffset=-1in | ||||
| \advance\voffset by 0.9cm | ||||
| %nove pridano, aby to fungovalo... | ||||
| \advance\hoffset by 6.5cm | ||||
| \hsize=22cm | ||||
| \vsize=16cm | ||||
| 
 | ||||
| \font\adrfonta=csssbx10 at 14pt | ||||
| \font\adrfontb=csssbx10 at 12pt | ||||
| \font\adrfontc=csss12 | ||||
| \font\tofont=csr12 at 16pt | ||||
| 
 | ||||
| \newdimen\fromskip | ||||
| \newdimen\toskip | ||||
| \fromskip=4.35cm | ||||
| \toskip=13.2cm | ||||
| 
 | ||||
| \def\first{\relax} | ||||
| 
 | ||||
| \catcode`_=13 | ||||
| %\catcode`_=12 | ||||
| 
 | ||||
| \def_{$\_$} | ||||
| 
 | ||||
| \advance\voffset by 2.5cm | ||||
| 
 | ||||
| 
 | ||||
| \def\obalka#1#2#3#4#5#6#7{ | ||||
| 
 | ||||
| \def\jmeno{#1} | ||||
| \def\prijm{#2} | ||||
| \def\skola{#3} | ||||
| \def\popis{} | ||||
| \def\first{} | ||||
| \def\ulice{#4} | ||||
| \def\PSC{#5} | ||||
| \def\mesto{#6} | ||||
| \def\stat{#7} | ||||
| \vskip-4mm\vbox to 0pt{\hbox to 0pt{\hskip1.4cm\epsfysize=2.55cm\epsfbox{lisak.eps}\hss}\vss} | ||||
| 
 | ||||
| \baselineskip=13pt | ||||
| \parindent=\fromskip | ||||
| \line{\indent\adrfonta Časopis M\&M,\hfil} | ||||
| \vskip3pt | ||||
| \line{\indent\adrfontb OVVP UK MFF\hfil} | ||||
| \vskip3pt | ||||
| \line{\indent\adrfontc Ke Karlovu 3, 121 16 Praha 2\hfil} | ||||
| \line{\indent\adrfontc Tel.: +420 221 911 235\hss} | ||||
| \line{\indent\adrfontc mam@atrey.karlin.mff.cuni.cz\hfil} | ||||
| 
 | ||||
| \vskip6.15cm | ||||
| \vbox to 0pt{\parindent=1.4cm\hsize=\toskip\advance\hsize by -1cm | ||||
| \vbox to 60pt{\vfil} \popis\vss} | ||||
| \parindent=\toskip | ||||
| \baselineskip=18pt | ||||
| \line{\indent\tofont\first\hfil} | ||||
| \line{\indent\tofont\jmeno\ \prijm\hfil} | ||||
| \ifx \skola \empty | ||||
| {} | ||||
| \else | ||||
| \line{\indent\tofont\skola\hfil} | ||||
| \fi | ||||
| \line{\indent\tofont\ulice\hfil} | ||||
| \line{\tofont\item{\PSC} \mesto\hfil} | ||||
| \vskip5pt | ||||
| \line{\indent\tofont\stat\hfil} | ||||
| 
 | ||||
| \vfil\eject | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| {% for r in resitele %} | ||||
| 	{% spaceless %} | ||||
| 	{% if r.zasilat == "do_skoly" %}  | ||||
| 		{% if r.stat == "CZ" %} | ||||
| \obalka{{r.jmeno|sloz}}{{r.prijmeni|sloz}}{{r.skola.nazev|sloz}}{{r.skola.ulice|sloz}}{{r.skola.psc|sloz}}{{r.skola.mesto|sloz}}{{''|sloz}} | ||||
| 		{% else %} | ||||
| \obalka{{r.jmeno|sloz}}{{r.prijmeni|sloz}}{{r.skola.nazev|sloz}}{{r.skola.ulice|sloz}}{{r.skola.psc|sloz}}{{r.skola.mesto|sloz}}{{r.stat.name|sloz}} | ||||
| 		{% endif %} | ||||
| 
 | ||||
| 	{% elif r.zasilat == "domu" %} | ||||
| 		{% if r.stat == "CZ" %} | ||||
| \obalka{{r.jmeno|sloz}}{{r.prijmeni|sloz}}{{''|sloz}}{{r.ulice|sloz}}{{r.psc|sloz}}{{r.mesto|sloz}}{{''|sloz}} | ||||
| 		{% else %} | ||||
| \obalka{{r.jmeno|sloz}}{{r.prijmeni|sloz}}{{''|sloz}}{{r.ulice|sloz}}{{r.psc|sloz}}{{r.mesto|sloz}}{{r.stat.name|sloz}} | ||||
| 		{% endif %} | ||||
| 	{% else %} | ||||
| % zasilat: {{r.zasilat}} | ||||
| %\obalka{{r.jmeno|sloz}}{{r.prijmeni|sloz}}{{''|sloz}}{{r.ulice|sloz}}{{r.psc|sloz}}{{r.mesto|sloz}}{{r.stat.name|sloz}} | ||||
| 	{% endif %} | ||||
| 	{% endspaceless %} | ||||
| {% endfor %} | ||||
| \bye | ||||
| 
 | ||||
| {% endautoescape %} | ||||
							
								
								
									
										6
									
								
								seminar/templatetags/tex.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								seminar/templatetags/tex.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| from django import template | ||||
| register = template.Library() | ||||
| 
 | ||||
| @register.filter(name='sloz') | ||||
| def sloz(value): | ||||
|     return u"{{{}}}".format(value) | ||||
|  | @ -35,4 +35,5 @@ urlpatterns = patterns('', | |||
|     url(r'^aesop-export/mam-sous-(?P<datum_zacatku>[\d-]+)\.csv$', export.ExportSousView.as_view(), name='seminar_export_sous'), | ||||
|     url(r'^aesop-export/index.csv$', export.ExportIndexView.as_view(), name='seminar_export_index'), | ||||
|     url(r'^cislo/(?P<rocnik>\d+).(?P<cislo>\d+)/vysledkovka.tex$', views.CisloVysledkovkaView.as_view(), name='seminar_cislo_vysledkovka'), | ||||
|     url(r'^cislo/(?P<rocnik>\d+).(?P<cislo>\d+)/obalky.pdf$',views.cisloObalkyView, name='seminar_cislo_obalky') | ||||
| ) | ||||
|  |  | |||
|  | @ -2,6 +2,7 @@ | |||
| 
 | ||||
| from django.shortcuts import get_object_or_404, render | ||||
| from django.http import HttpResponseRedirect | ||||
| from django.http import HttpResponse | ||||
| from django.core.urlresolvers import reverse | ||||
| from django.views import generic | ||||
| from django.utils.translation import ugettext as _ | ||||
|  | @ -13,6 +14,11 @@ from . import utils | |||
| 
 | ||||
| from datetime import timedelta, date, datetime | ||||
| from itertools import groupby | ||||
| import tempfile | ||||
| import subprocess | ||||
| import shutil | ||||
| import os | ||||
| from django.conf import settings | ||||
| 
 | ||||
| 
 | ||||
| def verejna_temata(rocnik): | ||||
|  | @ -334,6 +340,45 @@ class RocnikVysledkovkaView(RocnikView): | |||
|     content_type = 'text/plain; charset=UTF8' | ||||
|     #vypise na stranku textovy obsah vyTeXane vysledkovky k okopirovani | ||||
| 
 | ||||
| ### Generovani obalek | ||||
| class CisloObalkyStruct: | ||||
|     resitele = None | ||||
|     rocnik = None | ||||
|     problemy = None | ||||
| 
 | ||||
| def cisloObalkyView(request,rocnik,cislo): | ||||
|     letos = CisloObalkyStruct() | ||||
|     loni = CisloObalkyStruct() | ||||
| 
 | ||||
|     letos.rocnik = Rocnik.objects.filter(rocnik = rocnik) | ||||
|     loni.rocnik = Rocnik.objects.filter(rocnik = int(rocnik)-1) | ||||
|     letos.problemy = Problem.objects.filter(cislo_zadani = Cislo.objects.filter(rocnik=letos.rocnik,cislo__lte = cislo)) | ||||
|     loni.problemy = Problem.objects.filter(cislo_zadani = Cislo.objects.filter(rocnik=loni.rocnik)) | ||||
|     letos.resitele = Resitel.objects.filter(reseni = Reseni.objects.filter(problem=letos.problemy)).distinct() | ||||
|     loni.resitele = Resitel.objects.filter(reseni = Reseni.objects.filter(problem=loni.problemy)).distinct() | ||||
| 
 | ||||
|     if int(cislo) > 3: | ||||
|         resitele = letos.resitele | ||||
|     else: | ||||
|         resitele = list(letos.resitele) + list(loni.resitele) | ||||
|     return obalkyView(request,resitele) | ||||
| 
 | ||||
| 
 | ||||
| def obalkyView(request,resitele): | ||||
|     tex = render(request,'seminar/archiv/obalky.tex', {'resitele': resitele}).content | ||||
| 
 | ||||
|     tempdir = tempfile.mkdtemp() | ||||
|     with open(tempdir+"/obalky.tex","w") as texfile: | ||||
|         texfile.write(tex.decode("utf-8").encode("utf-8")) | ||||
|     shutil.copy(os.path.join(settings.STATIC_ROOT, 'seminar/lisak.eps'),tempdir) | ||||
|     subprocess.call(["csplain","obalky.tex"],cwd = tempdir) | ||||
|     subprocess.call(["dvipdf","obalky.dvi"],cwd = tempdir) | ||||
| 
 | ||||
| 
 | ||||
|     with open(tempdir+"/obalky.pdf","rb") as pdffile: | ||||
|         response = HttpResponse(pdffile.read(),content_type='application/pdf') | ||||
|     return response | ||||
| 
 | ||||
| 
 | ||||
| ### Soustredeni | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue