Browse Source

Obálky do personálního

pull/60/head
Jonas Havelka 4 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.urls import reverse
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.contrib.auth.models import User, Permission, Group, AnonymousUser
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.staticfiles.finders import find
from django.db import transaction
from django.http import HttpResponse
from django.utils import timezone
@ -53,6 +59,31 @@ class CojemamOrganizatoriStariView(generic.ListView):
).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):
""" 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.views.generic.base import RedirectView
from django.core.exceptions import PermissionDenied
from django.contrib.staticfiles.finders import find
import seminar.models as s
import seminar.models as m
@ -26,18 +25,15 @@ from vysledkovky.utils import body_resitelu, VysledkovkaCisla, \
from datetime import date, datetime
from itertools import groupby
from collections import OrderedDict
import tempfile
import subprocess
import shutil
import os
import os.path as op
from django.conf import settings
import unicodedata
import logging
import time
import http
from seminar.utils import aktivniResitele
import personalni.views
# ze starého modelu
#def verejna_temata(rocnik):
@ -485,31 +481,9 @@ class RocnikVysledkovkaView(RocnikView):
def cisloObalkyView(request, rocnik, cislo):
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
def TitulyViewRocnik(request, rocnik):

4
soustredeni/views.py

@ -11,7 +11,7 @@ import subprocess
from pathlib import Path
import http
from seminar.views import obalkyView
import personalni.views
class SoustredeniListView(generic.ListView):
@ -34,7 +34,7 @@ class SoustredeniListView(generic.ListView):
def soustredeniObalkyView(request, 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):

Loading…
Cancel
Save