fnp
/
wolnelektury.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
#3208 + raphael.js
[wolnelektury.git]
/
apps
/
catalogue
/
fields.py
diff --git
a/apps/catalogue/fields.py
b/apps/catalogue/fields.py
index
2c4e4d5
..
bb9f26e
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,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