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()
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
,
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
)
38 return HttpResponseNotFound()
40 # Make sure page request is an int. If not, deliver first page.
42 page
= int(request
.GET
.get('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', {
54 'category': category
.label
,
55 'page_list': page_list
,
56 }, context_instance
=RequestContext(request
))