work on pages, filters, lists

This commit is contained in:
bkfox
2019-09-09 02:47:57 +02:00
parent c68e21ee57
commit 215a6ac331
45 changed files with 424 additions and 275 deletions

View File

@ -3,6 +3,7 @@ from django.http import Http404
from django.views.generic import DetailView, ListView
from django.views.generic.base import TemplateResponseMixin, ContextMixin
from ..models import Page
from ..utils import Redirect
@ -15,8 +16,10 @@ class BaseView(TemplateResponseMixin, ContextMixin):
cover = None
""" Page cover """
show_side_nav = False
has_sidebar = True
""" Show side navigation """
has_filters = False
""" Show filters nav """
list_count = 5
""" Item count for small lists displayed on page. """
@ -24,27 +27,29 @@ class BaseView(TemplateResponseMixin, ContextMixin):
def station(self):
return self.request.station
def get_queryset(self):
return super().get_queryset().station(self.station)
# def get_queryset(self):
# return super().get_queryset().station(self.station)
def get_side_queryset(self):
def get_sidebar_queryset(self):
""" Return a queryset of items to render on the side nav. """
return None
return Page.objects.select_subclasses().published() \
.order_by('-pub_date')
def get_context_data(self, side_items=None, **kwargs):
def get_context_data(self, sidebar_items=None, **kwargs):
kwargs.setdefault('station', self.station)
kwargs.setdefault('cover', self.cover)
kwargs.setdefault('has_filters', self.has_filters)
show_side_nav = kwargs.setdefault('show_side_nav', self.show_side_nav)
if show_side_nav and side_items is None:
side_items = self.get_side_queryset()
side_items = None if side_items is None else \
side_items[:self.list_count]
has_sidebar = kwargs.setdefault('has_sidebar', self.has_sidebar)
if has_sidebar and sidebar_items is None:
sidebar_items = self.get_sidebar_queryset()
sidebar_items = None if sidebar_items is None else \
sidebar_items[:self.list_count]
if not 'audio_streams' in kwargs:
streams = self.station.audio_streams
streams = streams and streams.split('\n')
kwargs['audio_streams'] = streams
return super().get_context_data(side_items=side_items, **kwargs)
return super().get_context_data(sidebar_items=sidebar_items, **kwargs)