add episode filters

This commit is contained in:
bkfox 2022-02-22 18:48:17 +01:00
parent 849a14014c
commit cd360d9ac7
5 changed files with 13 additions and 17 deletions

View File

@ -19,8 +19,14 @@ class PageFilters(filters.FilterSet):
class EpisodeFilters(PageFilters):
podcast = filters.BooleanFilter(method='podcast_filter', label=_('Podcast'))
class Meta:
model = Episode
fields = {
}
fields = PageFilters.Meta.fields.copy()
def podcast_filter(self, queryset, name, value):
if value:
return queryset.filter(sound__is_public=True).distinct()
return queryset.filter(sound__isnull=True)

View File

@ -57,6 +57,8 @@ Usefull context:
{% endblock %}
</div>
<div class="navbar-end">
{% block top-nav-tools %}
{% endblock %}
{% block top-nav-end %}
<div class="navbar-item">
<form action="{% url 'page-list' %}" method="GET">
@ -70,8 +72,6 @@ Usefull context:
</form>
</div>
{% endblock %}
{% block top-nav-tools %}
{% endblock %}
</div>
</div>
</div>

View File

@ -5,7 +5,7 @@
{% block before_list %}
{{ block.super }}
{% if view.has_filters %}
{% if view.has_filters and object_list %}
<form method="GET" action="" class="media">
<div class="media-content">
{% block filters %}

View File

@ -4,6 +4,7 @@ import datetime
from django.utils.translation import gettext_lazy as _
from django.views.generic import ListView
from ..filters import EpisodeFilters
from ..models import Diffusion, Episode, Program, StaticPage, Sound
from .base import BaseView
from .program import ProgramPageDetailView
@ -25,22 +26,12 @@ class EpisodeDetailView(ProgramPageDetailView):
class EpisodeListView(PageListView):
model = Episode
filterset_class = EpisodeFilters
item_template_name = 'aircox/widgets/episode_item.html'
has_headline = True
parent_model = Program
attach_to_value = StaticPage.ATTACH_TO_EPISODES
def get_queryset(self):
qs = super().get_queryset()
if self.filters and 'podcasts' in self.filters:
qs = qs.filter(sound__is_public=True)
return qs
def get_filters(self):
return super().get_filters() + (
(_('Podcasts'), 'podcasts', tuple()),
)
class DiffusionListView(GetDateMixin, AttachedToMixin, BaseView, ListView):
""" View for timetables """

View File

@ -107,4 +107,3 @@ class FiltersMixin:
kwargs['get_params'] = params.pop('page', True) and params
return super().get_context_data(**kwargs)