X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/2d538a50605add2666172861744229599487f1b2..426f7aee276f1eba4d4f118edec96d0731c55eb9:/src/documents/views.py diff --git a/src/documents/views.py b/src/documents/views.py index f4c85612..905e885b 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -23,6 +23,7 @@ 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 +from librarian import epubcheck from apiclient import api_call, NotAuthorizedError from . import forms from . import helpers @@ -300,7 +301,8 @@ def book_epub(request, slug): from librarian.builders import EpubBuilder epub = EpubBuilder( - base_url='file://' + book.gallery_path() + '/' + 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' @@ -308,6 +310,35 @@ def book_epub(request, slug): 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): @@ -362,14 +393,21 @@ def book(request, slug): publish_error = book.publishable_error() publishable = publish_error is None + stats = None try: 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,