]> git.ipfire.org Git - thirdparty/patchwork.git/commitdiff
templates: Integrate series support
authorStephen Finucane <stephen@that.guru>
Sat, 29 Oct 2016 13:13:39 +0000 (14:13 +0100)
committerStephen Finucane <stephen@that.guru>
Mon, 31 Oct 2016 16:37:17 +0000 (16:37 +0000)
Integrate support for series in the web UI. This is rather
straightforward, the only significant change being the addition of a
filter for series filtering.

Signed-off-by: Stephen Finucane <stephen@that.guru>
Reviewed-by: Andy Doan <andy.doan@linaro.org>
Tested-by: Russell Currey <ruscur@russell.cc>
Reviewed-by: Daniel Axtens <dja@axtens.net>
Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
patchwork/filters.py
patchwork/templates/patchwork/patch-list.html
patchwork/views/__init__.py

index ea832b7a28add88ce577b23f2f40a420c062c434..bc8ca41add4aab2ce3324af043f1454750f0a94f 100644 (file)
@@ -25,7 +25,9 @@ from django.utils.safestring import mark_safe
 from django.utils import six
 from django.utils.six.moves.urllib.parse import quote
 
-from patchwork.models import Person, State
+from patchwork.models import Person
+from patchwork.models import Series
+from patchwork.models import State
 
 
 class Filter(object):
@@ -82,6 +84,48 @@ class Filter(object):
         return '%s: %s' % (self.name, self.kwargs())
 
 
+class SeriesFilter(Filter):
+    param = 'series'
+    name = 'Series'
+
+    def __init__(self, filters):
+        super(SeriesFilter, self).__init__(filters)
+        self.series = None
+
+    def _set_key(self, key):
+        self.series = None
+
+        key = key.strip()
+        if not key:
+            return
+
+        try:
+            self.series = Series.objects.get(id=int(key))
+        except (ValueError, Series.DoesNotExist):
+            return
+
+        self.applied = True
+
+    def kwargs(self):
+        if self.series:
+            return {'series': self.series}
+        return {}
+
+    def condition(self):
+        if self.series:
+            return self.series.name
+        return ''
+
+    def _form(self):
+        return mark_safe(('<input type="text" name="series" ' +
+                          'id="series_input" class="form-control">'))
+
+    def key(self):
+        if self.series:
+            return self.series.id
+        return
+
+
 class SubmitterFilter(Filter):
     param = 'submitter'
 
@@ -391,7 +435,8 @@ class DelegateFilter(Filter):
             self.forced = True
 
 
-filterclasses = [SubmitterFilter,
+filterclasses = [SeriesFilter,
+                 SubmitterFilter,
                  StateFilter,
                  SearchFilter,
                  ArchiveFilter,
index 937a60991a8eaa855a2ec3207407053596ca7a3a..4b979ac0de0132862178a7ba745ef4a5f774b0dc 100644 (file)
@@ -82,6 +82,10 @@ $(document).ready(function() {
     {% endifequal %}
    </th>
 
+   <th>
+    <span class="colinactive">Series</span>
+   </th>
+
    <th>
     {% project_tags %}
    </th>
@@ -176,6 +180,15 @@ $(document).ready(function() {
      {{ patch.name|default:"[no subject]"|truncatechars:100 }}
     </a>
    </td>
+   <td>
+    {% with patch.series.all.0 as series %}
+     {% if series %}
+     <a href="?series={{series.id}}">
+      {{ series|truncatechars:100 }}
+     </a>
+     {% endif %}
+    {% endwith %}
+   </td>
    <td class="text-nowrap">{{ patch|patch_tags }}</td>
    <td class="text-nowrap">{{ patch|patch_checks }}</td>
    <td class="text-nowrap">{{ patch.date|date:"Y-m-d" }}</td>
index 8b5e881c4eaea1979df0408a0b28cfe9cf85fa30..a29da837a2465466b3b287a0035871a5aba4259b 100644 (file)
@@ -297,8 +297,8 @@ def generic_list(request, project, view, view_args=None, filter_settings=None,
     # rendering the list template
     patches = patches.select_related('state', 'submitter', 'delegate')
 
-    # we also need checks
-    patches = patches.prefetch_related('check_set')
+    # we also need checks and series
+    patches = patches.prefetch_related('check_set', 'series')
 
     paginator = Paginator(request, patches)