from django.views.decorators.http import require_POST
from django_cas_ng.decorators import user_passes_test
+from librarian import epubcheck
from apiclient import api_call, NotAuthorizedError
from . import forms
from . import helpers
return HttpResponseForbidden("Not authorized.")
# TODO: move to celery
- doc = book.wldocument()
+ doc = book.wldocument(librarian2=True)
# TODO: error handling
- #### Problemas: images in children.
- epub = doc.as_epub(base_url='file://' + book.gallery_path() + '/').get_bytes()
+ from librarian.builders import EpubBuilder
+ epub = EpubBuilder(
+ base_url='file://' + book.gallery_path() + '/',
+ debug=True
+ ).build(doc).get_bytes()
response = HttpResponse(content_type='application/epub+zip')
response['Content-Disposition'] = 'attachment; filename=%s' % book.slug + '.epub'
response.write(epub)
return response
+@login_required
+@never_cache
+def book_epubcheck(request, slug):
+ book = get_object_or_404(Book, slug=slug)
+ if not book.accessible(request):
+ return HttpResponseForbidden("Not authorized.")
+
+ # TODO: move to celery
+ doc = book.wldocument(librarian2=True)
+ # TODO: error handling
+
+ from librarian.builders import EpubBuilder
+ epub = EpubBuilder(
+ base_url='file://' + book.gallery_path() + '/',
+ debug=True
+ ).build(doc)
+ fname = epub.get_filename()
+
+ messages = epubcheck.epubcheck(fname)
+ for message in messages:
+ for location in message.get('locations', []):
+ if 'wl_chunk' in location:
+ location['wl_chunk'] = book[location['wl_chunk']]
+ return render(request, 'documents/book_epubcheck.html', {
+ 'messages': messages,
+ 'book': book,
+ })
+
+
@login_required
@never_cache
def book_mobi(request, slug):
return HttpResponseForbidden("Not authorized.")
# TODO: move to celery
- doc = book.wldocument()
+ doc = book.wldocument(librarian2=True)
# TODO: error handling
- mobi = doc.as_mobi(base_url='file://' + book.gallery_path() + '/').get_bytes()
+ from librarian.builders import MobiBuilder
+ mobi = MobiBuilder(
+ base_url='file://' + book.gallery_path() + '/'
+ ).build(doc).get_bytes()
response = HttpResponse(content_type='application/x-mobipocket-ebook')
response['Content-Disposition'] = 'attachment; filename=%s' % book.slug + '.mobi'
response.write(mobi)
publish_error = book.publishable_error()
publishable = publish_error is None
+ stats = None
try:
- doc = book.wldocument()
+ doc = book.wldocument(librarian2=True)
except:
doc = None
-
+ else:
+ try:
+ stats = doc.get_statistics()
+ except:
+ pass
+
return render(request, "documents/book_detail.html", {
"book": book,
"doc": doc,
+ "stats": stats,
"publishable": publishable,
"publishable_error": publish_error,
"form": form,