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
# =======================
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.
"""
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:
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')
# 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')
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: