-def counters(request):
- form = forms.SearchForm()
-
- books = models.Book.objects.count()
- books_nonempty = models.Book.objects.exclude(html_file='').count()
- books_empty = models.Book.objects.filter(html_file='').count()
- books_root = models.Book.objects.filter(parent=None).count()
-
- media = models.BookMedia.objects.count()
- media_types = models.BookMedia.objects.values('type').\
- annotate(count=Count('type')).\
- order_by('type')
- for mt in media_types:
- mt['size'] = sum(b.file.size for b in models.BookMedia.objects.filter(type=mt['type']))
- mt['deprecated'] = models.BookMedia.objects.filter(
- type=mt['type'], source_sha1=None).count() if mt['type'] in ('mp3', 'ogg') else '-'
-
- return render_to_response('catalogue/counters.html',
- locals(), context_instance=RequestContext(request))
+def collection(request, slug):
+ coll = get_object_or_404(models.Collection, slug=slug)
+ slugs = coll.book_slugs.split()
+ # allow URIs
+ slugs = [slug.rstrip('/').rsplit('/', 1)[-1] if '/' in slug else slug
+ for slug in slugs]
+ return book_list(request, Q(slug__in=slugs),
+ template_name='catalogue/collection.html',
+ context={'collection': coll})