hide skipped media by default and add a show skipped media button

This commit is contained in:
meeb 2021-02-18 19:34:44 +11:00
parent df35aa2a5f
commit f6f4f244d7
3 changed files with 23 additions and 5 deletions

View File

@ -3,7 +3,7 @@
<div class="col s12">
<div class="pagination">
{% for i in paginator.page_range %}
<a class="pagenum{% if i == page_obj.number %} currentpage{% endif %}" href="?{% if filter %}filter={{ filter }}&{% endif %}page={{ i }}">{{ i }}</a>
<a class="pagenum{% if i == page_obj.number %} currentpage{% endif %}" href="?{% if filter %}filter={{ filter }}&{% endif %}page={{ i }}{% if show_skipped %}&show_skipped=yes{% endif %}">{{ i }}</a>
{% endfor %}
</div>
</div>

View File

@ -4,9 +4,16 @@
{% block content %}
<div class="row">
<div class="col s12">
<div class="col s12 m9">
<h1 class="truncate">Media</h1>
</div>
<div class="col s12 m3">
{% if show_skipped %}
<a href="{% url 'sync:media' %}" class="btn"><i class="far fa-eye-slash"></i> Hide skipped media</a>
{% else %}
<a href="{% url 'sync:media' %}?show_skipped=yes" class="btn"><i class="far fa-eye"></i> Show skipped media</a>
{% endif %}
</div>
</div>
{% include 'infobox.html' with message=message %}
<div class="row no-margin-bottom">
@ -48,5 +55,5 @@
</div>
{% endfor %}
</div>
{% include 'pagination.html' with pagination=sources.paginator filter=source.pk %}
{% include 'pagination.html' with pagination=sources.paginator filter=source.pk show_skipped=show_skipped %}
{% endblock %}

View File

@ -438,6 +438,7 @@ class MediaView(ListView):
def __init__(self, *args, **kwargs):
self.filter_source = None
self.show_skipped = False
super().__init__(*args, **kwargs)
def dispatch(self, request, *args, **kwargs):
@ -447,13 +448,22 @@ class MediaView(ListView):
self.filter_source = Source.objects.get(pk=filter_by)
except Source.DoesNotExist:
self.filter_source = None
show_skipped = request.GET.get('show_skipped', '').strip()
if show_skipped == 'yes':
self.show_skipped = True
return super().dispatch(request, *args, **kwargs)
def get_queryset(self):
if self.filter_source:
if self.show_skipped:
q = Media.objects.filter(source=self.filter_source)
else:
q = Media.objects.filter(source=self.filter_source, skip=False)
else:
if self.show_skipped:
q = Media.objects.all()
else:
q = Media.objects.filter(skip=False)
return q.order_by('-published', '-created')
def get_context_data(self, *args, **kwargs):
@ -464,6 +474,7 @@ class MediaView(ListView):
message = str(self.messages.get('filter', ''))
data['message'] = message.format(name=self.filter_source.name)
data['source'] = self.filter_source
data['show_skipped'] = self.show_skipped
return data