replace DirectoryEntry by extended Category data
[mygpo.git] / mygpo / directory / views.py
blob30e750cea9d1cc72c4601bdb561fd0b0e41a980f
1 from django.http import HttpResponseNotFound
2 from django.core.paginator import Paginator, InvalidPage, EmptyPage
3 from django.shortcuts import render_to_response
4 from django.template import RequestContext
6 from mygpo.directory.models import Category
7 from mygpo.web import utils
10 def browse(request, num_categories=10, num_tags_cloud=90, podcasts_per_category=10):
11 total = int(num_categories) + int(num_tags_cloud)
12 categories = Category.top_categories(total).all()
14 disp_categories = []
15 for category in categories[:num_categories]:
16 entries = category.get_podcasts(0, podcasts_per_category)
17 podcasts = [e.get_old_obj() for e in entries]
18 disp_categories.append({
19 'tag': category.label,
20 'entries': podcasts,
23 tag_cloud = categories[num_categories:]
25 tag_cloud.sort(key = lambda x: x.label.lower())
26 max_entries = max([t.get_weight() for t in tag_cloud] + [0])
28 return render_to_response('directory.html', {
29 'categories': disp_categories,
30 'tag_cloud': tag_cloud,
31 'max_entries': max_entries,
32 }, context_instance=RequestContext(request))
35 def category(request, category, page_size=20):
36 category = Category.for_tag(category)
37 if not category:
38 return HttpResponseNotFound()
40 # Make sure page request is an int. If not, deliver first page.
41 try:
42 page = int(request.GET.get('page', '1'))
43 except ValueError:
44 page = 1
46 entries = category.get_podcasts( (page-1) * page_size, page*page_size )
47 podcasts = [e.get_old_obj() for e in entries]
48 num_pages = len(category.podcasts) / page_size
50 page_list = utils.get_page_list(1, num_pages, page, 15)
52 return render_to_response('category.html', {
53 'entries': podcasts,
54 'category': category.label,
55 'page_list': page_list,
56 }, context_instance=RequestContext(request))