from django.utils.datastructures import SortedDict
from django.utils.http import urlquote_plus
from django.utils import translation
-from django.utils.translation import ugettext as _, ugettext_lazy
+from django.utils.translation import get_language, ugettext as _, ugettext_lazy
from django.views.decorators.vary import vary_on_headers
from ajaxable.utils import JSONResponse, AjaxableFormView
@vary_on_headers('X-Requested-With')
def catalogue(request):
- cache_key='catalogue.catalogue'
+ cache_key='catalogue.catalogue/' + get_language()
output = permanent_cache.get(cache_key)
if output is None:
tags = models.Tag.objects.exclude(
context=None,
):
""" generates a listing of all books, optionally filtered with a test function """
+ cache_key = "%s/%s" % (cache_key, get_language())
cached = permanent_cache.get(cache_key)
if cached is not None:
rendered_nav, rendered_book_list = cached
def collection(request, slug):
coll = get_object_or_404(models.Collection, slug=slug)
- def get_filter():
- slugs = coll.book_slugs.split()
- # allow URIs
- slugs = [slug.rstrip('/').rsplit('/', 1)[-1] if '/' in slug else slug
- for slug in slugs]
- return Q(slug__in=slugs)
- return book_list(request, get_filter=get_filter,
+ return book_list(request, get_filter=coll.get_query,
template_name='catalogue/collection.html',
cache_key='catalogue.collection:%s' % coll.slug,
context={'collection': coll})
# get related tags from `tag_counter` and `theme_counter`
related_counts = {}
tags_pks = [tag.pk for tag in tags]
- for book in objects.iterator():
+ for book in objects:
for tag_pk, value in itertools.chain(book.tag_counter.iteritems(), book.theme_counter.iteritems()):
if tag_pk in tags_pks:
continue