Generovani stvrzenek ze soustredeni.
This commit is contained in:
		
							parent
							
								
									d226b48f7f
								
							
						
					
					
						commit
						e07b228dac
					
				
					 4 changed files with 63 additions and 3 deletions
				
			
		
							
								
								
									
										24
									
								
								seminar/static/seminar/stvrzenka.sty
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								seminar/static/seminar/stvrzenka.sty
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | ||||||
|  | \newcommand{\stvrzenka}[6]{ | ||||||
|  | 	\removelastskip\bigskip | ||||||
|  | 	\newpage | ||||||
|  | 
 | ||||||
|  | 	\noindent\textbf{Dodavatel:}\hfill\textbf{Stvrzenka č. {\Large #1}} | ||||||
|  | 	 | ||||||
|  | 	{Univerzita Karlova \\ | ||||||
|  | 	\indent Matematicko-fyzikální fakulta \\ | ||||||
|  | 	\indent OVVP, M\&M \\ | ||||||
|  | 	\indent Ke Karlovu 3, 120 00 Praha 2 \\ | ||||||
|  | 	\indent IČ: 00216208 DIČ: CZ00216208} | ||||||
|  | 
 | ||||||
|  | 	\parindent=0pt | ||||||
|  | 	\parskip=0.2in | ||||||
|  | 
 | ||||||
|  | 	\textbf{Celkem Kč:} 700,- \\ | ||||||
|  | 	\textbf{Slovy:} sedmset korun českých | ||||||
|  | 
 | ||||||
|  | 	\textbf{Přijato od (firma, jméno, adresa):} #2 #3, #4, #5 #6 | ||||||
|  | 
 | ||||||
|  | 	\textbf{Účel platby:} příspěvek na stravování | ||||||
|  | 
 | ||||||
|  | 	ze dne \datum \hfill Přijal:\hspace{3cm} | ||||||
|  | } | ||||||
							
								
								
									
										13
									
								
								seminar/static/seminar/stvrzenky.tex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								seminar/static/seminar/stvrzenky.tex
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | ||||||
|  | \documentclass[12pt,a4paper]{article} | ||||||
|  | \usepackage[czech]{babel} | ||||||
|  | \usepackage[utf8]{inputenc} | ||||||
|  | \usepackage[margin=1in]{geometry} | ||||||
|  | 
 | ||||||
|  | \usepackage{stvrzenka} | ||||||
|  | 
 | ||||||
|  | \pagestyle{empty} | ||||||
|  | \begin{document} | ||||||
|  | 
 | ||||||
|  | \input{ucastnici} | ||||||
|  | 
 | ||||||
|  | \end{document} | ||||||
|  | @ -29,6 +29,7 @@ urlpatterns = [ | ||||||
|         name = 'seminar_seznam_soustredeni'), |         name = 'seminar_seznam_soustredeni'), | ||||||
|     url(r'^soustredeni/probehlo/(?P<soustredeni>\d+)/$', views.SoustredeniView.as_view(), name='seminar_soustredeni'), |     url(r'^soustredeni/probehlo/(?P<soustredeni>\d+)/$', views.SoustredeniView.as_view(), name='seminar_soustredeni'), | ||||||
|     url(r'^soustredeni/(?P<soustredeni>\d+)/seznam_ucastniku$', staff_member_required(views.SoustredeniUcastniciView.as_view()), name='soustredeni_ucastnici'), |     url(r'^soustredeni/(?P<soustredeni>\d+)/seznam_ucastniku$', staff_member_required(views.SoustredeniUcastniciView.as_view()), name='soustredeni_ucastnici'), | ||||||
|  |     url(r'^soustredeni/(?P<soustredeni>\d+)/stvrzenky/(?P<first_num>\d+)$', staff_member_required(views.soustredeniStvrzenkyExportView), name='soustredeni_stvrzenky'), | ||||||
|     url(r'^soustredeni/(?P<soustredeni>\d+)/export_ucastniku$', staff_member_required(views.soustredeniUcastniciExportView), name='soustredeni_ucastnici_export'), |     url(r'^soustredeni/(?P<soustredeni>\d+)/export_ucastniku$', staff_member_required(views.soustredeniUcastniciExportView), name='soustredeni_ucastnici_export'), | ||||||
|     url(r'^soustredeni/(?P<soustredeni>\d+)/fotogalerie/', include('galerie.urls')), |     url(r'^soustredeni/(?P<soustredeni>\d+)/fotogalerie/', include('galerie.urls')), | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ from django.core.urlresolvers import reverse | ||||||
| from django.core.exceptions import PermissionDenied, ObjectDoesNotExist | from django.core.exceptions import PermissionDenied, ObjectDoesNotExist | ||||||
| from django.views import generic | from django.views import generic | ||||||
| from django.utils.translation import ugettext as _ | from django.utils.translation import ugettext as _ | ||||||
| from django.http import Http404 | from django.http import Http404,HttpResponseBadRequest | ||||||
| from django.db.models import Q | from django.db.models import Q | ||||||
| from django.views.decorators.csrf import ensure_csrf_cookie | from django.views.decorators.csrf import ensure_csrf_cookie | ||||||
| from django.contrib.auth import authenticate, login | from django.contrib.auth import authenticate, login | ||||||
|  | @ -530,7 +530,7 @@ class SoustredeniView(generic.DetailView): | ||||||
|     template_name = 'seminar/archiv/soustredeni.html' |     template_name = 'seminar/archiv/soustredeni.html' | ||||||
| 
 | 
 | ||||||
| def soustredeniObalkyView(request,soustredeni): | def soustredeniObalkyView(request,soustredeni): | ||||||
|     soustredeni = Soustredeni.objects.filter(id = soustredeni)[0] |     soustredeni = get_object_or_404(Soustredeni,id = soustredeni) | ||||||
|     return obalkyView(request,soustredeni.ucastnici.all()) |     return obalkyView(request,soustredeni.ucastnici.all()) | ||||||
| 
 | 
 | ||||||
| class SoustredeniUcastniciView(generic.ListView): | class SoustredeniUcastniciView(generic.ListView): | ||||||
|  | @ -541,8 +541,30 @@ class SoustredeniUcastniciView(generic.ListView): | ||||||
|         self.soustredeni = get_object_or_404(Soustredeni, id=self.kwargs["soustredeni"]) |         self.soustredeni = get_object_or_404(Soustredeni, id=self.kwargs["soustredeni"]) | ||||||
|         return Soustredeni_Ucastnici.objects.filter(soustredeni=self.soustredeni).select_related('resitel') |         return Soustredeni_Ucastnici.objects.filter(soustredeni=self.soustredeni).select_related('resitel') | ||||||
| 
 | 
 | ||||||
|  | def soustredeniStvrzenkyExportView(request,soustredeni,first_num): | ||||||
|  |     first_num = int(first_num) | ||||||
|  |     soustredeni = get_object_or_404(Soustredeni,id = soustredeni) | ||||||
|  |     ucastnici = Resitel.objects.filter(soustredeni=soustredeni) | ||||||
|  |     for (idx,u) in enumerate(ucastnici): | ||||||
|  | 	    u.cislo_stvrzenky = first_num+idx; | ||||||
|  |     tex = render(request,'seminar/soustredeni/ucastnici.tex', {'ucastnici': ucastnici, 'datum':soustredeni.datum_zacatku }).content | ||||||
|  | 
 | ||||||
|  |     tempdir = tempfile.mkdtemp() | ||||||
|  |     with open(tempdir+"/ucastnici.tex","w") as texfile: | ||||||
|  |         # Pokud TeX chce ISO Latin, tak se da encode nastavit | ||||||
|  |         texfile.write(tex.decode("utf-8").encode("utf-8")) | ||||||
|  |     shutil.copy(os.path.join(settings.STATIC_ROOT, 'seminar/stvrzenka.sty'),tempdir) | ||||||
|  |     shutil.copy(os.path.join(settings.STATIC_ROOT, 'seminar/stvrzenky.tex'),tempdir) | ||||||
|  |     subprocess.call(["pdfcslatex","stvrzenky.tex"],cwd = tempdir) | ||||||
|  | 
 | ||||||
|  |     with open(tempdir+"/stvrzenky.pdf","rb") as pdffile: | ||||||
|  |         response = HttpResponse(pdffile.read(),content_type='application/pdf') | ||||||
|  |     shutil.rmtree(tempdir) | ||||||
|  |     return response | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| def soustredeniUcastniciExportView(request,soustredeni): | def soustredeniUcastniciExportView(request,soustredeni): | ||||||
|     soustredeni = Soustredeni.objects.filter(id = soustredeni)[0] |     soustredeni = get_object_or_404(Soustredeni,id = soustredeni) | ||||||
|     ucastnici = Resitel.objects.filter(soustredeni=soustredeni) |     ucastnici = Resitel.objects.filter(soustredeni=soustredeni) | ||||||
|     response = HttpResponse(content_type='text/csv') |     response = HttpResponse(content_type='text/csv') | ||||||
|     response['Content-Disposition'] = 'attachment; filename="ucastnici.csv"' |     response['Content-Disposition'] = 'attachment; filename="ucastnici.csv"' | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue