add episode filters
This commit is contained in:
		@ -19,8 +19,14 @@ class PageFilters(filters.FilterSet):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class EpisodeFilters(PageFilters):
 | 
					class EpisodeFilters(PageFilters):
 | 
				
			||||||
 | 
					    podcast = filters.BooleanFilter(method='podcast_filter', label=_('Podcast'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    class Meta:
 | 
					    class Meta:
 | 
				
			||||||
        model = Episode
 | 
					        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 %}
 | 
					                            {% endblock %}
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                        <div class="navbar-end">
 | 
					                        <div class="navbar-end">
 | 
				
			||||||
 | 
					                            {% block top-nav-tools %}
 | 
				
			||||||
 | 
					                            {% endblock %}
 | 
				
			||||||
                            {% block top-nav-end %}
 | 
					                            {% block top-nav-end %}
 | 
				
			||||||
                            <div class="navbar-item">
 | 
					                            <div class="navbar-item">
 | 
				
			||||||
                                <form action="{% url 'page-list' %}" method="GET">
 | 
					                                <form action="{% url 'page-list' %}" method="GET">
 | 
				
			||||||
@ -70,8 +72,6 @@ Usefull context:
 | 
				
			|||||||
                                </form>
 | 
					                                </form>
 | 
				
			||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
                            {% endblock %}
 | 
					                            {% endblock %}
 | 
				
			||||||
                            {% block top-nav-tools %}
 | 
					 | 
				
			||||||
                            {% endblock %}
 | 
					 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -5,7 +5,7 @@
 | 
				
			|||||||
{% block before_list %}
 | 
					{% block before_list %}
 | 
				
			||||||
{{ block.super }}
 | 
					{{ block.super }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% if view.has_filters %}
 | 
					{% if view.has_filters and object_list %}
 | 
				
			||||||
<form method="GET" action="" class="media">
 | 
					<form method="GET" action="" class="media">
 | 
				
			||||||
    <div class="media-content">
 | 
					    <div class="media-content">
 | 
				
			||||||
        {% block filters %}
 | 
					        {% block filters %}
 | 
				
			||||||
 | 
				
			|||||||
@ -4,6 +4,7 @@ import datetime
 | 
				
			|||||||
from django.utils.translation import gettext_lazy as _
 | 
					from django.utils.translation import gettext_lazy as _
 | 
				
			||||||
from django.views.generic import ListView
 | 
					from django.views.generic import ListView
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from ..filters import EpisodeFilters
 | 
				
			||||||
from ..models import Diffusion, Episode, Program, StaticPage, Sound
 | 
					from ..models import Diffusion, Episode, Program, StaticPage, Sound
 | 
				
			||||||
from .base import BaseView
 | 
					from .base import BaseView
 | 
				
			||||||
from .program import ProgramPageDetailView
 | 
					from .program import ProgramPageDetailView
 | 
				
			||||||
@ -25,22 +26,12 @@ class EpisodeDetailView(ProgramPageDetailView):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class EpisodeListView(PageListView):
 | 
					class EpisodeListView(PageListView):
 | 
				
			||||||
    model = Episode
 | 
					    model = Episode
 | 
				
			||||||
 | 
					    filterset_class = EpisodeFilters
 | 
				
			||||||
    item_template_name = 'aircox/widgets/episode_item.html'
 | 
					    item_template_name = 'aircox/widgets/episode_item.html'
 | 
				
			||||||
    has_headline = True
 | 
					    has_headline = True
 | 
				
			||||||
    parent_model = Program
 | 
					    parent_model = Program
 | 
				
			||||||
    attach_to_value = StaticPage.ATTACH_TO_EPISODES
 | 
					    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):
 | 
					class DiffusionListView(GetDateMixin, AttachedToMixin, BaseView, ListView):
 | 
				
			||||||
    """ View for timetables """
 | 
					    """ View for timetables """
 | 
				
			||||||
 | 
				
			|||||||
@ -107,4 +107,3 @@ class FiltersMixin:
 | 
				
			|||||||
        kwargs['get_params'] = params.pop('page', True) and params
 | 
					        kwargs['get_params'] = params.pop('page', True) and params
 | 
				
			||||||
        return super().get_context_data(**kwargs)
 | 
					        return super().get_context_data(**kwargs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user