]> git.0d.be Git - earwig.git/commitdiff
manager: add basic filtering capabilities
authorFrédéric Péters <fpeters@0d.be>
Sat, 1 Sep 2018 14:12:38 +0000 (16:12 +0200)
committerFrédéric Péters <fpeters@0d.be>
Sat, 1 Sep 2018 17:22:48 +0000 (19:22 +0200)
earwig/manager/templates/earwig/manager_home.html
earwig/manager/views.py

index 6cd70cdb0ca87e10faaa6adc46d105625bd5e754..5ea05b153a8084015afe471ccceb963e0aa99691 100644 (file)
 
 {% block content %}
 
+<form>
+  <p>
+   <input name="q" type="search" value="{{view.get_query_filter}}">
+   <select name="q_status">
+     {% for status_id, status_label in statuses %}
+     <option value="{{ status_id }}" {% if status_id == view.get_status_filter %}selected{% endif %}>{{ status_label }}</option>
+     {% endfor %}
+   </select>
+   <button>{% trans 'Search' %}</button>
+  </p>
+</form>
+
 <table class="main">
 <thead>
   <tr>
index 1da692060940ef7b724ec4eb591e7aec59211c2f..fcda89e150d6bc538ede2be6fd4539df4d91ff90 100644 (file)
 
 from django.core.urlresolvers import reverse_lazy
 from django.contrib import messages
+from django.db.models import Q
 from django.shortcuts import redirect
 from django.utils.translation import ugettext_lazy as _
 from django.views.generic import ListView, CreateView, DetailView
 
-from ..sounds.models import Channel, Sound
+from ..sounds.models import Channel, Sound, STATUSES
 
 
 class Homepage(ListView):
@@ -29,7 +30,23 @@ class Homepage(ListView):
     template_name = 'earwig/manager_home.html'
 
     def get_queryset(self, **kwargs):
-        return self.model.objects.filter(status='').select_related()
+        qs = self.model.objects.filter(status=self.get_status_filter()).select_related()
+        query = self.get_query_filter()
+        if query:
+            qs = qs.filter(Q(title__icontains=query) |
+                           Q(channel__title__icontains=query))
+        return qs
+
+    def get_query_filter(self):
+        return self.request.GET.get('q') or ''
+
+    def get_status_filter(self):
+        return self.request.GET.get('q_status') or ''
+
+    def get_context_data(self, **kwargs):
+        context = super(Homepage, self).get_context_data(**kwargs)
+        context['statuses'] = STATUSES
+        return context
 
 homepage = Homepage.as_view()