Update librarian API.
[wolnelektury.git] / src / catalogue / fields.py
index d88787e..79fe67e 100644 (file)
@@ -169,12 +169,7 @@ class BuildEbook(Task):
         fieldfile.save(None, File(open(out.get_filename(), 'rb')), save=False)
         self.set_file_permissions(fieldfile)
         if book.pk is not None:
-            books = type(book).objects.filter(pk=book.pk)
-            books.update(**{
-                fieldfile.field.attname: fieldfile
-            })
-            for book in books:
-                book.save()  # just to trigger post-save
+            book.save(update_fields=[fieldfile.field.attname])
         if fieldfile.field.format_name in app_settings.FORMAT_ZIPS:
             remove_zip(app_settings.FORMAT_ZIPS[fieldfile.field.format_name])
 # Don't decorate BuildEbook, because we want to subclass it.
@@ -196,7 +191,7 @@ class BuildPdf(BuildEbook):
     def transform(wldoc, fieldfile):
         return wldoc.as_pdf(
             morefloats=settings.LIBRARIAN_PDF_MOREFLOATS, cover=True,
-            ilustr_path=gallery_path(wldoc.book_info.url.slug), customizations=['notoc'])
+            base_url=gallery_url(wldoc.book_info.url.slug), customizations=['notoc'])
 
     def build(self, fieldfile):
         BuildEbook.build(self, fieldfile)
@@ -208,7 +203,7 @@ class BuildPdf(BuildEbook):
 class BuildEpub(BuildEbook):
     @staticmethod
     def transform(wldoc, fieldfile):
-        return wldoc.as_epub(cover=True, ilustr_path=gallery_path(wldoc.book_info.url.slug))
+        return wldoc.as_epub(cover=True, base_url=gallery_url(wldoc.book_info.url.slug))
 
 
 @BuildEbook.register('mobi')
@@ -216,7 +211,7 @@ class BuildEpub(BuildEbook):
 class BuildMobi(BuildEbook):
     @staticmethod
     def transform(wldoc, fieldfile):
-        return wldoc.as_mobi(cover=True, ilustr_path=gallery_path(wldoc.book_info.url.slug))
+        return wldoc.as_mobi(cover=True, base_url=gallery_url(wldoc.book_info.url.slug))
 
 
 @BuildEbook.register('html')
@@ -316,10 +311,13 @@ class BuildHtml(BuildEbook):
         from librarian import DCNS
         url_elem = wldoc.edoc.getroot().find('.//' + DCNS('identifier.url'))
         if url_elem is None:
-            gallery = ''
+            gal_url = ''
+            gal_path = ''
         else:
-            gallery = gallery_url(slug=url_elem.text.rsplit('/', 1)[1])
-        return wldoc.as_html(options={'gallery': "'%s'" % gallery})
+            slug = url_elem.text.rstrip('/').rsplit('/', 1)[1]
+            gal_url = gallery_url(slug=slug)
+            gal_path = gallery_path(slug=slug)
+        return wldoc.as_html(gallery_path=gal_path, gallery_url=gal_url, base_url=gal_url)
 
 
 class BuildCover(BuildEbook):