X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/22af332597f857ee4fe60ea2ebfd8723fd9d5da9..fd9768648fe3e37115655245f7fe7aba2adcc5e5:/apps/catalogue/views.py diff --git a/apps/catalogue/views.py b/apps/catalogue/views.py index c80853437..2bc1f10aa 100644 --- a/apps/catalogue/views.py +++ b/apps/catalogue/views.py @@ -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'))