images in HTML; publish images
authorJan Szejko <j-sz@o2.pl>
Tue, 15 Mar 2016 15:38:21 +0000 (16:38 +0100)
committerJan Szejko <j-sz@o2.pl>
Tue, 15 Mar 2016 15:38:21 +0000 (16:38 +0100)
apps/catalogue/models/book.py
apps/catalogue/views.py
lib/librarian

index f109474..cce9c72 100755 (executable)
@@ -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:
index d93a8c4..0eac8de 100644 (file)
@@ -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:
index 6b75d94..3acdb97 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 6b75d94412c089b10bd7637b1008bdaf9057a440
+Subproject commit 3acdb97ed96bb54a04c031e017c2059f86db57e4