Rozstřílení seminářové aplikace #60
					 4 changed files with 35 additions and 30 deletions
				
			
		|  | @ -1,3 +1,8 @@ | ||||||
|  | import tempfile | ||||||
|  | import subprocess | ||||||
|  | import shutil | ||||||
|  | import http | ||||||
|  | 
 | ||||||
| from django.shortcuts import render | from django.shortcuts import render | ||||||
| from django.urls import reverse | from django.urls import reverse | ||||||
| from django.views import generic | from django.views import generic | ||||||
|  | @ -6,6 +11,7 @@ from django.views.decorators.debug import sensitive_post_parameters | ||||||
| from django.views.generic.base import TemplateView | from django.views.generic.base import TemplateView | ||||||
| from django.contrib.auth.models import User, Permission, Group, AnonymousUser | from django.contrib.auth.models import User, Permission, Group, AnonymousUser | ||||||
| from django.contrib.auth.mixins import LoginRequiredMixin | from django.contrib.auth.mixins import LoginRequiredMixin | ||||||
|  | from django.contrib.staticfiles.finders import find | ||||||
| from django.db import transaction | from django.db import transaction | ||||||
| from django.http import HttpResponse | from django.http import HttpResponse | ||||||
| from django.utils import timezone | from django.utils import timezone | ||||||
|  | @ -53,6 +59,31 @@ class CojemamOrganizatoriStariView(generic.ListView): | ||||||
| 	).order_by('-organizuje_do') | 	).order_by('-organizuje_do') | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 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, 'personalni/obalky.tex', { | ||||||
|  | 		'resitele': resitele | ||||||
|  | 	}).content | ||||||
|  | 
 | ||||||
|  | 	with tempfile.TemporaryDirectory() as tempdir: | ||||||
|  | 		with open(tempdir+"/obalky.tex", "w") as texfile: | ||||||
|  | 			texfile.write(tex.decode()) | ||||||
|  | 		shutil.copy(find('seminar/lisak.pdf'), tempdir) | ||||||
|  | 		subprocess.call(["pdflatex", "obalky.tex"], cwd=tempdir) | ||||||
|  | 
 | ||||||
|  | 		with open(tempdir+"/obalky.pdf", "rb") as pdffile: | ||||||
|  | 			response = HttpResponse(pdffile.read(), content_type='application/pdf') | ||||||
|  | 	return response | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| class OrgoRozcestnikView(TemplateView): | class OrgoRozcestnikView(TemplateView): | ||||||
| 	""" Zobrazí organizátorský rozcestník.""" | 	""" Zobrazí organizátorský rozcestník.""" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -8,7 +8,6 @@ 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 | ||||||
|  | @ -26,18 +25,15 @@ from vysledkovky.utils import body_resitelu, VysledkovkaCisla, \ | ||||||
| from datetime import date, datetime | from datetime import date, datetime | ||||||
| from itertools import groupby | from itertools import groupby | ||||||
| from collections import OrderedDict | from collections import OrderedDict | ||||||
| import tempfile |  | ||||||
| import subprocess |  | ||||||
| import shutil |  | ||||||
| import os | import os | ||||||
| import os.path as op | import os.path as op | ||||||
| from django.conf import settings | from django.conf import settings | ||||||
| import unicodedata | import unicodedata | ||||||
| import logging | import logging | ||||||
| import time | import time | ||||||
| import http |  | ||||||
| 
 | 
 | ||||||
| from seminar.utils import aktivniResitele | from seminar.utils import aktivniResitele | ||||||
|  | import personalni.views | ||||||
| 
 | 
 | ||||||
| # ze starého modelu | # ze starého modelu | ||||||
| #def verejna_temata(rocnik): | #def verejna_temata(rocnik): | ||||||
|  | @ -485,31 +481,9 @@ class RocnikVysledkovkaView(RocnikView): | ||||||
| 
 | 
 | ||||||
| def cisloObalkyView(request, rocnik, cislo): | def cisloObalkyView(request, rocnik, cislo): | ||||||
| 	realne_cislo = get_object_or_404(Cislo, poradi=cislo, rocnik__rocnik=rocnik) | 	realne_cislo = get_object_or_404(Cislo, poradi=cislo, rocnik__rocnik=rocnik) | ||||||
| 	return obalkyView(request, aktivniResitele(realne_cislo)) | 	return personalni.views.obalkyView(request, aktivniResitele(realne_cislo)) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 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 |  | ||||||
| 
 |  | ||||||
| 	with tempfile.TemporaryDirectory() as tempdir: |  | ||||||
| 		with open(tempdir+"/obalky.tex","w") as texfile: |  | ||||||
| 			texfile.write(tex.decode()) |  | ||||||
| 		shutil.copy(find('seminar/lisak.pdf'), tempdir) |  | ||||||
| 		subprocess.call(["pdflatex","obalky.tex"], cwd = tempdir) |  | ||||||
| 
 |  | ||||||
| 		with open(tempdir+"/obalky.pdf","rb") as pdffile: |  | ||||||
| 			response = HttpResponse(pdffile.read(), content_type='application/pdf') |  | ||||||
| 	return response |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| ### Tituly | ### Tituly | ||||||
| def TitulyViewRocnik(request, rocnik): | def TitulyViewRocnik(request, rocnik): | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ import subprocess | ||||||
| from pathlib import Path | from pathlib import Path | ||||||
| import http | import http | ||||||
| 
 | 
 | ||||||
| from seminar.views import obalkyView | import personalni.views | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class SoustredeniListView(generic.ListView): | class SoustredeniListView(generic.ListView): | ||||||
|  | @ -34,7 +34,7 @@ class SoustredeniListView(generic.ListView): | ||||||
| 
 | 
 | ||||||
| def soustredeniObalkyView(request, soustredeni): | def soustredeniObalkyView(request, soustredeni): | ||||||
| 	soustredeni = get_object_or_404(Soustredeni, id=soustredeni) | 	soustredeni = get_object_or_404(Soustredeni, id=soustredeni) | ||||||
| 	return obalkyView(request, soustredeni.ucastnici.all()) | 	return personalni.views.obalkyView(request, soustredeni.ucastnici.all()) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class SoustredeniUcastniciBaseView(generic.ListView): | class SoustredeniUcastniciBaseView(generic.ListView): | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue