Merge pull request 'Fix obálek' (!45) from fix-obalky into master
This commit is contained in:
		
						commit
						81494a7152
					
				
					 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