-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:
- size = 0
- deprecated = missing_project = 0
- for b in models.BookMedia.objects.filter(type=mt['type']):
- size += b.file.size
- if b.type in ('mp3', 'ogg'):
- if not b.source_sha1:
- deprecated += 1
- if not 'project' in b.get_extra_info_value():
- missing_project += 1
- mt['size'] = size
- mt['deprecated'] = deprecated
- mt['missing_project'] = missing_project
-
- 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})