fix test for custom pdf file generation
[wolnelektury.git] / apps / catalogue / views.py
index c808534..2bc1f10 100644 (file)
@@ -28,11 +28,12 @@ from django.views.generic.list_detail import object_list
 
 from catalogue import models
 from catalogue import forms
-from catalogue.utils import split_tags
+from catalogue.utils import split_tags, AttachmentHttpResponse, async_build_pdf
 from pdcounter import models as pdcounter_models
 from pdcounter import views as pdcounter_views
 from suggest.forms import PublishingSuggestForm
 
+from os import path
 
 staff_required = user_passes_test(lambda user: user.is_staff)
 
@@ -253,6 +254,7 @@ def book_detail(request, slug):
     projects = sorted(projects)
 
     form = forms.SearchForm()
+    custom_pdf_form = forms.CustomPDFForm()
     return render_to_response('catalogue/book_detail.html', locals(),
         context_instance=RequestContext(request))
 
@@ -762,3 +764,21 @@ def download_zip(request, format, slug):
     else:
         raise Http404('No format specified for zip package')
     return HttpResponseRedirect(urlquote_plus(settings.MEDIA_URL + url, safe='/?='))
+
+
+def download_custom_pdf(request, slug):
+    book = models.Book.objects.get(slug=slug)
+    if request.method == 'GET':
+        form = forms.CustomPDFForm(request.GET)
+        if form.is_valid():
+            cust = form.customizations
+            pdf_file = models.get_customized_pdf_path(book, cust)
+                
+            if not path.exists(pdf_file):
+                result = async_build_pdf.delay(book.id, cust, pdf_file)
+                result.wait()
+            return AttachmentHttpResponse(file_name=("%s.pdf" % book.slug), file_path=pdf_file, mimetype="application/pdf")
+        else:
+            raise Http404(_('Incorrect customization options for PDF'))
+    else:
+        raise Http404(_('Bad method'))