if not DefaultStorage().exists(file_name):
book.build_pdf(customizations=customizations, file_name=file_name)
print "done."
+
+
+class MultiQuerySet(object):
+ def __init__(self, *args, **kwargs):
+ self.querysets = args
+ self._count = None
+
+ def count(self):
+ if not self._count:
+ self._count = sum(len(qs) for qs in self.querysets)
+ return self._count
+
+ def __len__(self):
+ return self.count()
+
+ def __getitem__(self, item):
+ indices = (offset, stop, step) = item.indices(self.count())
+ items = []
+ total_len = stop - offset
+ for qs in self.querysets:
+ if len(qs) < offset:
+ offset -= len(qs)
+ else:
+ items += list(qs[offset:stop])
+ if len(items) >= total_len:
+ return items
+ else:
+ offset = 0
+ stop = total_len - len(items)
+ continue
\ No newline at end of file
from ajaxable.utils import LazyEncoder, JSONResponse
from catalogue import models
from catalogue import forms
-from catalogue.utils import split_tags, AttachmentHttpResponse, async_build_pdf
+from catalogue.utils import (split_tags, AttachmentHttpResponse,
+ async_build_pdf, MultiQuerySet)
from catalogue.tasks import touch_tag
from pdcounter import models as pdcounter_models
from pdcounter import views as pdcounter_views
from suggest.forms import PublishingSuggestForm
from picture.models import Picture
-from itertools import chain
from os import path
staff_required = user_passes_test(lambda user: user.is_staff)
only_author = len(tags) == 1 and tags[0].category == 'author'
objects = models.Book.objects.none()
- # Add pictures
- objects = Picture.tagged.with_all(tags)|objects
+ # Add pictures
+ objects = MultiQuerySet(Picture.tagged.with_all(tags), objects)
- return object_list(
- request,
- objects,
- template_name='catalogue/tagged_object_list.html',
- extra_context={
+ return render_to_response('catalogue/tagged_object_list.html',
+ {
+ 'object_list': objects,
'categories': categories,
'only_shelf': only_shelf,
'only_author': only_author,
'only_my_shelf': only_my_shelf,
'formats_form': forms.DownloadFormatsForm(),
'tags': tags,
- }
- )
+ },
+ context_instance=RequestContext(request))
def book_fragments(request, book, theme_slug):