From f469680f323a7a4c9cfe894b5af13d4357f7bca4 Mon Sep 17 00:00:00 2001 From: Jan Szejko Date: Tue, 15 Mar 2016 16:38:21 +0100 Subject: [PATCH] images in HTML; publish images --- apps/catalogue/models/book.py | 13 +++++++++++-- apps/catalogue/views.py | 7 ++++--- lib/librarian | 2 +- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/apps/catalogue/models/book.py b/apps/catalogue/models/book.py index f1094740..cce9c729 100755 --- a/apps/catalogue/models/book.py +++ b/apps/catalogue/models/book.py @@ -87,6 +87,12 @@ class Book(models.Model): self.get_absolute_url() ) + def gallery_path(self): + return os.path.join(settings.MEDIA_ROOT, settings.IMAGE_DIR, self.gallery) + + def gallery_url(self): + return '%s%s%s/' % (settings.MEDIA_URL, settings.IMAGE_DIR, self.gallery) + # Creating & manipulating # ======================= @@ -416,7 +422,7 @@ class Book(models.Model): parse_dublincore=parse_dublincore, strict=strict) - def publish(self, user, fake=False): + def publish(self, user, fake=False, host=None): """ Publishes a book on behalf of a (local) user. """ @@ -424,7 +430,10 @@ class Book(models.Model): changes = self.get_current_changes(publishable=True) book_xml = self.materialize(changes=changes) if not fake: - apiclient.api_call(user, "books/", {"book_xml": book_xml}) + data = {"book_xml": book_xml} + if host: + data['gallery_url'] = 'http://' + host + self.gallery_url() + apiclient.api_call(user, "books/", data) # record the publish br = BookPublishRecord.objects.create(book=self, user=user) for c in changes: diff --git a/apps/catalogue/views.py b/apps/catalogue/views.py index d93a8c49..0eac8ded 100644 --- a/apps/catalogue/views.py +++ b/apps/catalogue/views.py @@ -235,7 +235,7 @@ def book_html(request, slug): return HttpResponseForbidden("Not authorized.") doc = book.wldocument(parse_dublincore=False) - html = doc.as_html() + html = doc.as_html(options={'gallery': "'%s'" % book.gallery_url()}) html = html.get_string() if html is not None else '' # response = http.HttpResponse(html, content_type='text/html') @@ -259,7 +259,7 @@ def book_pdf(request, slug): # TODO: move to celery doc = book.wldocument() # TODO: error handling - pdf_file = doc.as_pdf(cover=True, ilustr_path=os.path.join(settings.MEDIA_ROOT, settings.IMAGE_DIR, book.gallery)) + pdf_file = doc.as_pdf(cover=True, ilustr_path=book.gallery_path()) from catalogue.ebook_utils import serve_file return serve_file(pdf_file.get_filename(), book.slug + '.pdf', 'application/pdf') @@ -540,7 +540,8 @@ def publish(request, slug): return HttpResponseForbidden("Not authorized.") try: - book.publish(request.user) + protocol = 'https://' if request.is_secure() else 'http://' + book.publish(request.user, host=protocol + request.get_host()) except NotAuthorizedError: return http.HttpResponseRedirect(reverse('apiclient_oauth')) except BaseException, e: diff --git a/lib/librarian b/lib/librarian index 6b75d944..3acdb97e 160000 --- a/lib/librarian +++ b/lib/librarian @@ -1 +1 @@ -Subproject commit 6b75d94412c089b10bd7637b1008bdaf9057a440 +Subproject commit 3acdb97ed96bb54a04c031e017c2059f86db57e4 -- 2.20.1