fnp
/
wolnelektury.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Walkaround for jsonfield not decoding json on save.
[wolnelektury.git]
/
apps
/
catalogue
/
fields.py
diff --git
a/apps/catalogue/fields.py
b/apps/catalogue/fields.py
index
fad697f
..
bb9f26e
100644
(file)
--- a/
apps/catalogue/fields.py
+++ b/
apps/catalogue/fields.py
@@
-17,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):
@@
-74,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)
@@
-101,19
+105,28
@@
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 django.core.files.base import ContentFile
- from slughifi import slughifi
+ from
fnpdjango.utils.text.
slughifi import slughifi
from sortify import sortify
from librarian import html
from catalogue.models import Fragment, Tag
from sortify import sortify
from librarian import html
from catalogue.models import Fragment, Tag