{% 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>
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):
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()