fnp
/
wolnelektury.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
move collections menu
[wolnelektury.git]
/
apps
/
catalogue
/
fields.py
diff --git
a/apps/catalogue/fields.py
b/apps/catalogue/fields.py
index
2c4e4d5
..
68aaa40
100644
(file)
--- a/
apps/catalogue/fields.py
+++ b/
apps/catalogue/fields.py
@@
-8,8
+8,7
@@
from django.db import models
from django.db.models.fields.files import FieldFile
from catalogue import app_settings
from catalogue.utils import remove_zip, truncate_html_words
from django.db.models.fields.files import FieldFile
from catalogue import app_settings
from catalogue.utils import remove_zip, truncate_html_words
-from celery import Task
-from celery.task import task
+from celery.task import Task, task
from waiter.utils import clear_cache
from waiter.utils import clear_cache
@@
-18,11
+17,11
@@
class EbookFieldFile(FieldFile):
def build(self):
"""Build the ebook immediately."""
def build(self):
"""Build the ebook immediately."""
- return self.field.builder(self)
+ return self.field.builder
.build
(self)
def build_delay(self):
"""Builds the ebook in a delayed task."""
def build_delay(self):
"""Builds the ebook in a delayed task."""
- return self.field.builder.delay(self)
+ return self.field.builder.delay(self
.instance, self.field.attname
)
class EbookField(models.FileField):
class EbookField(models.FileField):
@@
-75,7
+74,11
@@
class BuildEbook(Task):
"""
return getattr(wldoc, "as_%s" % fieldfile.field.format_name)()
"""
return getattr(wldoc, "as_%s" % fieldfile.field.format_name)()
- def run(self, fieldfile):
+ def run(self, obj, field_name):
+ """Just run `build` on FieldFile, can't pass it directly to Celery."""
+ return self.build(getattr(obj, field_name))
+
+ def build(self, fieldfile):
book = fieldfile.instance
out = self.transform(book.wldocument(), fieldfile)
fieldfile.save(None, File(open(out.get_filename())), save=False)
book = fieldfile.instance
out = self.transform(book.wldocument(), fieldfile)
fieldfile.save(None, File(open(out.get_filename())), save=False)
@@
-102,17
+105,26
@@
class BuildTxt(BuildEbook):
class BuildPdf(BuildEbook):
@staticmethod
def transform(wldoc, fieldfile):
class BuildPdf(BuildEbook):
@staticmethod
def transform(wldoc, fieldfile):
- return wldoc.as_pdf(morefloats=settings.LIBRARIAN_PDF_MOREFLOATS)
+ return wldoc.as_pdf(morefloats=settings.LIBRARIAN_PDF_MOREFLOATS,
+ cover=True)
- def
run
(self, fieldfile):
- BuildEbook.
run
(self, fieldfile)
+ def
build
(self, fieldfile):
+ BuildEbook.
build
(self, fieldfile)
clear_cache(fieldfile.instance.slug)
clear_cache(fieldfile.instance.slug)
+@BuildEbook.register('epub')
+@task(ignore_result=True)
+class BuildEpub(BuildEbook):
+ @staticmethod
+ def transform(wldoc, fieldfile):
+ return wldoc.as_epub(cover=True)
+
+
@BuildEbook.register('html')
@task(ignore_result=True)
class BuildHtml(BuildEbook):
@BuildEbook.register('html')
@task(ignore_result=True)
class BuildHtml(BuildEbook):
- def
run
(self, fieldfile):
+ def
build
(self, fieldfile):
from django.core.files.base import ContentFile
from slughifi import slughifi
from sortify import sortify
from django.core.files.base import ContentFile
from slughifi import slughifi
from sortify import sortify