diff --git a/www/podjango/apps/cast/urls.py b/www/podjango/apps/cast/urls.py new file mode 100644 index 0000000000000000000000000000000000000000..d89501ab261a19d7211ff2a85a124fef56e72352 --- /dev/null +++ b/www/podjango/apps/cast/urls.py @@ -0,0 +1,82 @@ +# Copyright (C) 2008 Bradley M. Kuhn +# Copyright (C) 2006, 2007 Software Freedom Law Center, Inc. +# +# This software's license gives you freedom; you can copy, convey, +# propogate, redistribute and/or modify this program under the terms of +# the GNU Affero General Public License (AGPL) as published by the Free +# Software Foundation (FSF), either version 3 of the License, or (at your +# option) any later version of the AGPL published by the FSF. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program in a file in the toplevel directory called +# "AGPLv3". If not, see . +# +from datetime import datetime + +from django.conf.urls import url +from django.views.generic.dates import DateDetailView, DayArchiveView, MonthArchiveView, YearArchiveView + +from .models import Cast, CastTag +from .views import custom_index, query + +extra_context = {} + +info_dict = { + 'queryset': Cast.objects.all(), + 'date_field': 'pub_date', + 'extra_context': extra_context, +} + +urlpatterns = [ + url(r'^(?P\d{4})/(?P[a-z]{3})/(?P\w{1,2})/(?P[-\w]+)/$', DateDetailView.as_view(**info_dict), name='detail'), + url(r'^(?P\d{4})/(?P[a-z]{3})/(?P\w{1,2})/$', DayArchiveView.as_view(**info_dict), name='day-archive'), + url(r'^(?P\d{4})/(?P[a-z]{3})/$', MonthArchiveView.as_view(**info_dict), name='month-archive'), + url(r'^(?P\d{4})/$', YearArchiveView.as_view(**info_dict), name='year-archive'), +# FIXME HOW DO I MAKE THE SLUG WORK WITH NO DATES IN IT. +# (r'^(?P[-\w]+)/$', 'object_detail', dict(info_dict, slug_field='slug')), +] + +urlpatterns += [ + url(r'^$', custom_index, dict(info_dict, paginate_by=20), name='cast'), + url(r'^query/$', query, name='query'), +] + +# Code to display authors and tags on each blog page + + +def all_tags_by_use_amount(): + """Returns all tags with an added 'cnt' attribute (how many times used) + + Also sorts the tags so most-used tags appear first. + """ + + # tally use amount + retval = [] + current = None + for obj in CastTag.objects.filter(cast__pub_date__lte=datetime.now(), + cast__isnull=False).order_by('label'): + if current is not None and obj.id == current.id: + current.cnt += 1 + else: + if current is not None: + retval.append(current) + current = obj + current.cnt = 1 + if current is not None: + retval.append(current) + + # sort and return + retval.sort(key=lambda x: -x.cnt) + return retval + +# The functions are passed to the context uncalled so they will be +# called for each web request. If we want to only make these database +# queries a single time when a web server process begins, call both +# functions below (i.e. make both lines below end in '()') + +extra_context['all_tags'] = all_tags_by_use_amount