forked from rc/aircox
		
	add episode filters
This commit is contained in:
		@ -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)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user