Browse Source

Obálky do personálního

pull/60/head
Jonas Havelka 3 months ago
parent
commit
ba2ea74a04
  1. 0
      personalni/templates/personalni/obalky.tex
  2. 31
      personalni/views.py
  3. 30
      seminar/views/views_all.py
  4. 4
      soustredeni/views.py

0
seminar/templates/seminar/archiv/obalky.tex → personalni/templates/personalni/obalky.tex

31
personalni/views.py

@ -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."""

30
seminar/views/views_all.py

@ -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):

4
soustredeni/views.py

@ -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…
Cancel
Save