from errno import EEXIST, ENOENT
from fcntl import flock, LOCK_EX
from zipfile import ZipFile
+from traceback import print_exc
-from librarian import DocProvider
from reporting.utils import read_chunks
from celery.task import task
import catalogue.models
pass
-class ORMDocProvider(DocProvider):
- """Used for getting books' children."""
-
- def __init__(self, book):
- self.book = book
-
- def by_slug_and_lang(self, slug, language):
- if slug == self.book.slug and language == self.language:
- return open(self.book.xml_file.path)
- else:
- return type(self.book).objects.get(
- slug=slug, language=language).xml_file
-
-
class LockFile(object):
"""
A file lock monitor class; createas an ${objname}.lock
Accepts the same args as Book.build_pdf, but with book id as first parameter
instead of Book instance
"""
- book = catalogue.models.Book.objects.get(id=book_id)
- print "will gen %s" % DefaultStorage().path(file_name)
- if not DefaultStorage().exists(file_name):
- book.build_pdf(customizations=customizations, file_name=file_name)
- print "done."
+ try:
+ book = catalogue.models.Book.objects.get(id=book_id)
+ print "will gen %s" % DefaultStorage().path(file_name)
+ if not DefaultStorage().exists(file_name):
+ book.build_pdf(customizations=customizations, file_name=file_name)
+ print "done."
+ except Exception, e:
+ print "Error during pdf creation: %s" % e
+ print_exc
+ raise e
class MultiQuerySet(object):
return self.count()
def __getitem__(self, item):
- indices = (offset, stop, step) = item.indices(self.count())
+ try:
+ indices = (offset, stop, step) = item.indices(self.count())
+ except AttributeError:
+ # it's not a slice - make it one
+ return self[item : item + 1][0]
items = []
total_len = stop - offset
for qs in self.querysets:
else:
offset = 0
stop = total_len - len(items)
- continue
\ No newline at end of file
+ continue