forked from rc/aircox
work on home page, fix views & templates issues
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
from django.db.models import Q
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.urls import reverse
|
||||
|
||||
from ..models import Episode, Program, Page
|
||||
from .mixins import ParentMixin
|
||||
@ -10,30 +11,54 @@ from .page import PageDetailView, PageListView
|
||||
__all__ = ['ProgramPageDetailView', 'ProgramDetailView', 'ProgramPageListView']
|
||||
|
||||
|
||||
class ProgramPageDetailView(PageDetailView):
|
||||
class BaseProgramMixin:
|
||||
def get_program(self):
|
||||
return self.object
|
||||
|
||||
def get_sidebar_url(self):
|
||||
return reverse('program-page-list',
|
||||
kwargs={"parent_slug": self.program.slug})
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
self.program = self.get_program()
|
||||
kwargs['program'] = self.program
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
class ProgramDetailView(BaseProgramMixin, PageDetailView):
|
||||
model = Program
|
||||
|
||||
def get_sidebar_queryset(self):
|
||||
return super().get_sidebar_queryset().filter(parent=self.program)
|
||||
|
||||
|
||||
class ProgramListView(PageListView):
|
||||
model = Program
|
||||
|
||||
|
||||
class ProgramPageDetailView(BaseProgramMixin, ParentMixin, PageDetailView):
|
||||
"""
|
||||
Base view class for a page that is displayed as a program's child page.
|
||||
"""
|
||||
program = None
|
||||
has_sidebar = True
|
||||
list_count = 5
|
||||
parent_model = Program
|
||||
|
||||
def get_program(self):
|
||||
self.parent = self.object.program
|
||||
return self.object.program
|
||||
|
||||
def get_sidebar_queryset(self):
|
||||
return super().get_sidebar_queryset().filter(parent=self.object)
|
||||
return super().get_sidebar_queryset().filter(parent=self.program)
|
||||
|
||||
|
||||
class ProgramPageListView(ParentMixin, PageListView):
|
||||
class ProgramPageListView(BaseProgramMixin, ParentMixin, PageListView):
|
||||
model = Page
|
||||
parent_model = Program
|
||||
queryset = Page.objects.select_subclasses()
|
||||
|
||||
|
||||
class ProgramDetailView(ProgramPageDetailView):
|
||||
model = Program
|
||||
def get_program(self):
|
||||
return self.parent
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
self.program = kwargs.setdefault('program', self.object)
|
||||
kwargs.setdefault('sidebar_url_parent', None)
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user