feat: work on date menu
This commit is contained in:
@ -5,7 +5,6 @@ __all__ = ["ArticleDetailView", "ArticleListView"]
|
||||
|
||||
|
||||
class ArticleDetailView(PageDetailView):
|
||||
has_sidebar = True
|
||||
model = Article
|
||||
|
||||
def get_sidebar_queryset(self):
|
||||
|
@ -2,19 +2,12 @@ from django.http import HttpResponseRedirect
|
||||
from django.urls import reverse
|
||||
from django.views.generic.base import ContextMixin, TemplateResponseMixin
|
||||
|
||||
from ..models import Page
|
||||
|
||||
__all__ = ("BaseView", "BaseAPIView")
|
||||
|
||||
|
||||
class BaseView(TemplateResponseMixin, ContextMixin):
|
||||
header_template_name = "aircox/widgets/header.html"
|
||||
has_sidebar = True
|
||||
"""Show side navigation."""
|
||||
has_filters = False
|
||||
"""Show filters nav."""
|
||||
list_count = 5
|
||||
"""Item count for small lists displayed on page."""
|
||||
|
||||
@property
|
||||
def station(self):
|
||||
@ -23,33 +16,14 @@ class BaseView(TemplateResponseMixin, ContextMixin):
|
||||
# def get_queryset(self):
|
||||
# return super().get_queryset().station(self.station)
|
||||
|
||||
def get_sidebar_queryset(self):
|
||||
"""Return a queryset of items to render on the side nav."""
|
||||
return (
|
||||
Page.objects.select_subclasses().published().order_by("-pub_date")
|
||||
)
|
||||
|
||||
def get_sidebar_url(self):
|
||||
return reverse("page-list")
|
||||
|
||||
def get_page(self):
|
||||
return None
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
kwargs.setdefault("station", self.station)
|
||||
kwargs.setdefault("page", self.get_page())
|
||||
kwargs.setdefault("has_filters", self.has_filters)
|
||||
kwargs.setdefault("header_template_name", self.header_template_name)
|
||||
|
||||
has_sidebar = kwargs.setdefault("has_sidebar", self.has_sidebar)
|
||||
if has_sidebar and "sidebar_object_list" not in kwargs:
|
||||
sidebar_object_list = self.get_sidebar_queryset()
|
||||
if sidebar_object_list is not None:
|
||||
kwargs["sidebar_object_list"] = sidebar_object_list[
|
||||
: self.list_count
|
||||
]
|
||||
kwargs["sidebar_list_url"] = self.get_sidebar_url()
|
||||
|
||||
if "audio_streams" not in kwargs:
|
||||
kwargs["audio_streams"] = self.station.streams
|
||||
|
||||
@ -61,6 +35,11 @@ class BaseView(TemplateResponseMixin, ContextMixin):
|
||||
)
|
||||
kwargs["model"] = model
|
||||
|
||||
page = kwargs.get("page")
|
||||
if page:
|
||||
kwargs["title"] = page.display_title
|
||||
kwargs["cover"] = page.cover and page.cover.url
|
||||
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
def dispatch(self, *args, **kwargs):
|
||||
|
@ -13,7 +13,6 @@ class DiffusionListView(GetDateMixin, AttachedToMixin, BaseView, ListView):
|
||||
"""View for timetables."""
|
||||
|
||||
model = Diffusion
|
||||
has_filters = True
|
||||
redirect_date_url = "diffusion-list"
|
||||
attach_to_value = StaticPage.ATTACH_TO_DIFFUSIONS
|
||||
|
||||
|
@ -14,7 +14,6 @@ class HomeView(BaseView, ListView):
|
||||
queryset = Diffusion.objects.on_air().select_related("episode")
|
||||
logs_count = 5
|
||||
publications_count = 5
|
||||
has_filters = False
|
||||
|
||||
def get_queryset(self):
|
||||
return super().get_queryset().date(date.today())
|
||||
|
@ -72,7 +72,6 @@ class LogListView(AttachedToMixin, BaseView, LogListMixin, ListView):
|
||||
`request.GET`, defaults to today)."""
|
||||
|
||||
redirect_date_url = "log-list"
|
||||
has_filters = True
|
||||
attach_to_value = StaticPage.ATTACH_TO_LOGS
|
||||
|
||||
def get_date(self):
|
||||
|
@ -71,7 +71,7 @@ class ParentMixin:
|
||||
def get_context_data(self, **kwargs):
|
||||
self.parent = kwargs.setdefault("parent", self.parent)
|
||||
if self.parent is not None:
|
||||
kwargs.setdefault("cover", self.parent.cover)
|
||||
kwargs.setdefault("cover", self.parent.cover.url)
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
|
@ -22,8 +22,6 @@ class BasePageListView(AttachedToMixin, ParentMixin, BaseView, ListView):
|
||||
"""Base view class for BasePage list."""
|
||||
|
||||
template_name = "aircox/basepage_list.html"
|
||||
item_template_name = "aircox/widgets/page_item.html"
|
||||
has_sidebar = True
|
||||
|
||||
paginate_by = 30
|
||||
has_headline = True
|
||||
@ -41,20 +39,22 @@ class BasePageListView(AttachedToMixin, ParentMixin, BaseView, ListView):
|
||||
)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
kwargs.setdefault("item_template_name", self.item_template_name)
|
||||
kwargs.setdefault("has_headline", self.has_headline)
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
if not context.get("page") and not context.get("title"):
|
||||
model = self.model._meta.verbose_name_plural
|
||||
parent = context.get("parent")
|
||||
if parent:
|
||||
parent = parent.get_display_title()
|
||||
title = _("{model} of {parent}")
|
||||
else:
|
||||
title = _("{model}")
|
||||
context["title"] = title.format(model=model, parent=parent)
|
||||
parent = context.get("parent")
|
||||
if not context.get("page"):
|
||||
if not context.get("title"):
|
||||
model = self.model._meta.verbose_name_plural
|
||||
if parent:
|
||||
parent = parent.display_title
|
||||
title = _("{model} of {parent}")
|
||||
else:
|
||||
title = _("{model}")
|
||||
context["title"] = title.format(model=model, parent=parent)
|
||||
|
||||
if not context.get("cover") and parent and parent.cover:
|
||||
context["cover"] = parent.cover.url
|
||||
return context
|
||||
|
||||
|
||||
@ -63,7 +63,13 @@ class BasePageDetailView(BaseView, DetailView):
|
||||
|
||||
template_name = "aircox/basepage_detail.html"
|
||||
context_object_name = "page"
|
||||
has_filters = False
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
if self.object.cover:
|
||||
kwargs.setdefault("cover", self.object.cover.url)
|
||||
if self.object.title:
|
||||
kwargs.setdefault("title", self.object.display_title)
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
def get_queryset(self):
|
||||
return super().get_queryset().select_related("cover")
|
||||
@ -96,7 +102,6 @@ class PageListView(FiltersMixin, BasePageListView):
|
||||
|
||||
filterset_class = PageFilters
|
||||
template_name = None
|
||||
has_filters = True
|
||||
categories = None
|
||||
filters = None
|
||||
|
||||
@ -132,7 +137,6 @@ class PageDetailView(BasePageDetailView):
|
||||
|
||||
template_name = None
|
||||
context_object_name = "page"
|
||||
has_filters = False
|
||||
|
||||
def get_template_names(self):
|
||||
return super().get_template_names() + ["aircox/page_detail.html"]
|
||||
|
Reference in New Issue
Block a user