Fix obálek #45
2 changed files with 35 additions and 16 deletions
|
@ -8,6 +8,7 @@ from django.http import Http404
|
||||||
from django.db.models import Q, Sum, Count
|
from django.db.models import Q, Sum, Count
|
||||||
from django.views.generic.base import RedirectView
|
from django.views.generic.base import RedirectView
|
||||||
from django.core.exceptions import PermissionDenied
|
from django.core.exceptions import PermissionDenied
|
||||||
|
from django.contrib.staticfiles.finders import find
|
||||||
|
|
||||||
import seminar.models as s
|
import seminar.models as s
|
||||||
import seminar.models as m
|
import seminar.models as m
|
||||||
|
@ -36,6 +37,7 @@ import unicodedata
|
||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
from collections.abc import Sequence
|
from collections.abc import Sequence
|
||||||
|
import http
|
||||||
|
|
||||||
from seminar.utils import aktivniResitele
|
from seminar.utils import aktivniResitele
|
||||||
|
|
||||||
|
@ -562,17 +564,25 @@ def cisloObalkyView(request, rocnik, cislo):
|
||||||
|
|
||||||
|
|
||||||
def obalkyView(request, resitele):
|
def obalkyView(request, resitele):
|
||||||
|
if len(resitele) == 0:
|
||||||
|
return HttpResponse(
|
||||||
|
render(request, 'universal.html', {
|
||||||
|
'title': 'Není pro koho vyrobit obálky.',
|
||||||
|
'text': 'Právě ses pokusil/a vygenerovat obálky pro prázdnou množinu lidí. Můžeš to zkusit změnit, případně se zeptej webařů :-)',
|
||||||
|
}),
|
||||||
|
status=http.HTTPStatus.NOT_FOUND,
|
||||||
|
)
|
||||||
|
|
||||||
tex = render(request,'seminar/archiv/obalky.tex', {'resitele': resitele}).content
|
tex = render(request,'seminar/archiv/obalky.tex', {'resitele': resitele}).content
|
||||||
|
|
||||||
tempdir = tempfile.mkdtemp()
|
with tempfile.TemporaryDirectory() as tempdir:
|
||||||
with open(tempdir+"/obalky.tex","w") as texfile:
|
with open(tempdir+"/obalky.tex","w") as texfile:
|
||||||
texfile.write(tex.decode())
|
texfile.write(tex.decode())
|
||||||
shutil.copy(os.path.join(settings.STATIC_ROOT, 'seminar/lisak.pdf'), tempdir)
|
shutil.copy(find('seminar/lisak.pdf'), tempdir)
|
||||||
subprocess.call(["pdflatex","obalky.tex"], cwd = tempdir)
|
subprocess.call(["pdflatex","obalky.tex"], cwd = tempdir)
|
||||||
|
|
||||||
with open(tempdir+"/obalky.pdf","rb") as pdffile:
|
with open(tempdir+"/obalky.pdf","rb") as pdffile:
|
||||||
response = HttpResponse(pdffile.read(), content_type='application/pdf')
|
response = HttpResponse(pdffile.read(), content_type='application/pdf')
|
||||||
shutil.rmtree(tempdir)
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ import tempfile
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
import http
|
||||||
|
|
||||||
from seminar.views import obalkyView
|
from seminar.views import obalkyView
|
||||||
|
|
||||||
|
@ -76,10 +77,19 @@ def soustredeniUcastniciExportView(request, soustredeni):
|
||||||
def soustredeniStvrzenkyView(request, soustredeni):
|
def soustredeniStvrzenkyView(request, soustredeni):
|
||||||
soustredeni = get_object_or_404(Soustredeni, id=soustredeni)
|
soustredeni = get_object_or_404(Soustredeni, id=soustredeni)
|
||||||
ucastnici = Resitel.objects.filter(soustredeni=soustredeni)
|
ucastnici = Resitel.objects.filter(soustredeni=soustredeni)
|
||||||
|
if ucastnici.count() == 0:
|
||||||
|
return HttpResponse(
|
||||||
|
render(request, 'universal.html', {
|
||||||
|
'title': 'Není pro koho vyrobit stvrzenky.',
|
||||||
|
'text': 'Právě ses pokusil/a vygenerovat stvrzenky pro prázdnou množinu lidí. Můžeš to zkusit změnit, případně se zeptej webařů :-)',
|
||||||
|
}),
|
||||||
|
status=http.HTTPStatus.NOT_FOUND,
|
||||||
|
)
|
||||||
castka = Nastaveni.get_solo().cena_sous
|
castka = Nastaveni.get_solo().cena_sous
|
||||||
tex = render(request, 'soustredeni/stvrzenky.tex', {'ucastnici': ucastnici, 'soustredeni': soustredeni, 'castka': castka}).content
|
tex = render(request, 'soustredeni/stvrzenky.tex', {'ucastnici': ucastnici, 'soustredeni': soustredeni, 'castka': castka}).content
|
||||||
|
|
||||||
tempdir = Path(tempfile.mkdtemp())
|
with tempfile.TemporaryDirectory() as tempdirfn:
|
||||||
|
tempdir = Path(tempdirfn)
|
||||||
with open(tempdir / "stvrzenky.tex", "w") as texfile:
|
with open(tempdir / "stvrzenky.tex", "w") as texfile:
|
||||||
texfile.write(tex.decode())
|
texfile.write(tex.decode())
|
||||||
|
|
||||||
|
@ -88,5 +98,4 @@ def soustredeniStvrzenkyView(request, soustredeni):
|
||||||
|
|
||||||
with open(tempdir / "stvrzenky.pdf", "rb") as pdffile:
|
with open(tempdir / "stvrzenky.pdf", "rb") as pdffile:
|
||||||
response = HttpResponse(pdffile.read(), content_type='application/pdf')
|
response = HttpResponse(pdffile.read(), content_type='application/pdf')
|
||||||
shutil.rmtree(tempdir)
|
|
||||||
return response
|
return response
|
||||||
|
|
Loading…
Reference in a new issue