add episode filters
This commit is contained in:
parent
849a14014c
commit
cd360d9ac7
|
@ -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)
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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 """
|
||||
|
|
|
@ -107,4 +107,3 @@ class FiltersMixin:
|
|||
kwargs['get_params'] = params.pop('page', True) and params
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user