X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/e977f7187b10b1bc0a30794cd585c6b840568996..81f5e7445d649ead05b4d3d0a15b742444cd8b06:/src/documents/views.py?ds=sidebyside diff --git a/src/documents/views.py b/src/documents/views.py index 397d78bd..6c9f29e3 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -5,7 +5,7 @@ from collections import defaultdict from datetime import datetime, date, timedelta import logging import os -from urllib.parse import unquote, urlsplit, urlunsplit +from urllib.parse import quote_plus, unquote, urlsplit, urlunsplit from django.conf import settings from django.contrib import auth @@ -19,8 +19,7 @@ from django.http import Http404, HttpResponse, HttpResponseForbidden from django.http.response import HttpResponseRedirect from django.shortcuts import get_object_or_404, render from django.utils.encoding import iri_to_uri -from django.utils.http import urlquote_plus -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.views.decorators.http import require_POST from django_cas_ng.decorators import user_passes_test @@ -224,7 +223,7 @@ def book_xml(request, slug): @never_cache def book_xml_dc(request, slug): - book = get_object_or_404(Book, dc_slug=slug) + book = get_object_or_404(Book, catalogue_book_id=slug) return serve_xml(request, book, slug) @@ -273,7 +272,7 @@ def book_pdf(request, slug, mobile=False): doc = book.wldocument() # TODO: error handling customizations = ['26pt', 'nothemes', 'nomargins', 'notoc'] if mobile else None - pdf_file = doc.as_pdf(cover=True, ilustr_path=book.gallery_path(), customizations=customizations) + pdf_file = doc.as_pdf(cover=True, base_url=request.build_absolute_uri(book.gallery_path()), customizations=customizations) from .ebook_utils import serve_file return serve_file(pdf_file.get_filename(), book.slug + '.pdf', 'application/pdf') @@ -288,7 +287,9 @@ def book_epub(request, slug): # TODO: move to celery doc = book.wldocument() # TODO: error handling - epub = doc.as_epub(ilustr_path=book.gallery_path()).get_bytes() + + #### Problemas: images in children. + epub = doc.as_epub(base_url='file://' + book.gallery_path() + '/').get_bytes() response = HttpResponse(content_type='application/epub+zip') response['Content-Disposition'] = 'attachment; filename=%s' % book.slug + '.epub' response.write(epub) @@ -304,7 +305,7 @@ def book_mobi(request, slug): # TODO: move to celery doc = book.wldocument() # TODO: error handling - mobi = doc.as_mobi(ilustr_path=book.gallery_path()).get_bytes() + mobi = doc.as_mobi(base_url='file://' + book.gallery_path() + '/').get_bytes() response = HttpResponse(content_type='application/x-mobipocket-ebook') response['Content-Disposition'] = 'attachment; filename=%s' % book.slug + '.mobi' response.write(mobi) @@ -345,8 +346,14 @@ def book(request, slug): publish_error = book.publishable_error() publishable = publish_error is None + try: + doc = book.wldocument() + except: + doc = None + return render(request, "documents/book_detail.html", { "book": book, + "doc": doc, "publishable": publishable, "publishable_error": publish_error, "form": form, @@ -572,16 +579,18 @@ def publish(request, slug): if form.is_valid(): days = form.cleaned_data['days'] beta = form.cleaned_data['beta'] + hidden = form.cleaned_data['hidden'] else: days = 0 beta = False + hidden = False book = get_object_or_404(Book, slug=slug) if not book.accessible(request): return HttpResponseForbidden("Not authorized.") try: protocol = 'https://' if request.is_secure() else 'http://' - book.publish(request.user, host=protocol + request.get_host(), days=days, beta=beta) + book.publish(request.user, host=protocol + request.get_host(), days=days, beta=beta, hidden=hidden) except NotAuthorizedError: return http.HttpResponseRedirect(reverse('apiclient_oauth' if not beta else 'apiclient_beta_oauth')) except BaseException as e: