Files @ 5479785cc100
Branch filter:

Location: website/conservancy/podjango/urls.py

bsturmfels
Add default line-height to <li> elements

They currently look too tight compared with paragraph text.
# Copyright 2010       Bradley M. Kuhn <bkuhn@ebb.org>
# Copyright 2005-2008  James Garrison

# This software's license gives you freedom; you can copy, convey,
# propagate, redistribute, modify and/or redistribute modified versions of
# 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 <http://www.gnu.org/licenses/>.

import datetime

from django.conf import settings
from django.shortcuts import get_object_or_404
from django.urls import path
from django.views.generic.dates import DateDetailView

from . import frontpage
from .feeds import Mp3CastFeed, OggCastFeed, view
from .models import Cast, CastTag, Podcast
from . import views

app_name = 'podjango'

extra_context = {}
info_dict = {
    'date_field': 'pub_date',
    'extra_context': extra_context,
}

class PodcastDateDetailView(DateDetailView):
    date_field = 'pub_date'
    model = Cast

    def get(self, request, podcast_slug, *args, **kwargs):
        self.podcast = get_object_or_404(Podcast, slug=podcast_slug)
        return super().get(request, *args, **kwargs)

    def get_queryset(self):
        return super().get_queryset().filter(podcast=self.podcast)

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['podcast'] = self.podcast
        return context


urlpatterns = [
    path('', views.podcasts, name='podcasts'),
    path('<slug:podcast_slug>/', frontpage.view, name='cast-home'),
    path(
        '<slug:podcast_slug>/<int:year>/<month>/<int:day>/<slug:slug>/',
        PodcastDateDetailView.as_view(
            template_name='podjango/cast_detail.html',
        ),
        name='detail'
    ),
    path('<slug:podcast_slug>/all/', views.custom_index, info_dict, name='cast'),
    path('<slug:podcast_slug>/feeds/ogg/', OggCastFeed(), name='feed-ogg'),
    path('<slug:podcast_slug>/feeds/mp3/', Mp3CastFeed(), name='feed-mp3'),
    path('<slug:podcast_slug>/feeds/', view, name='feeds'),
]

if settings.DEBUG:
    from django.conf.urls.static import static
    urlpatterns += static('/', document_root='podjango/static')


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