From: Stephen Finucane Date: Sat, 29 Oct 2016 13:13:39 +0000 (+0100) Subject: templates: Integrate series support X-Git-Tag: v2.0.0-rc1~175 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f3c5cb55b617f0837cd558c132a97b010f7d4c91;p=thirdparty%2Fpatchwork.git templates: Integrate series support 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 Reviewed-by: Andy Doan Tested-by: Russell Currey Reviewed-by: Daniel Axtens Reviewed-by: Andrew Donnellan --- diff --git a/patchwork/filters.py b/patchwork/filters.py index ea832b7a..bc8ca41a 100644 --- a/patchwork/filters.py +++ b/patchwork/filters.py @@ -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(('')) + + 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, diff --git a/patchwork/templates/patchwork/patch-list.html b/patchwork/templates/patchwork/patch-list.html index 937a6099..4b979ac0 100644 --- a/patchwork/templates/patchwork/patch-list.html +++ b/patchwork/templates/patchwork/patch-list.html @@ -82,6 +82,10 @@ $(document).ready(function() { {% endifequal %} + + Series + + {% project_tags %} @@ -176,6 +180,15 @@ $(document).ready(function() { {{ patch.name|default:"[no subject]"|truncatechars:100 }} + + {% with patch.series.all.0 as series %} + {% if series %} + + {{ series|truncatechars:100 }} + + {% endif %} + {% endwith %} + {{ patch|patch_tags }} {{ patch|patch_checks }} {{ patch.date|date:"Y-m-d" }} diff --git a/patchwork/views/__init__.py b/patchwork/views/__init__.py index 8b5e881c..a29da837 100644 --- a/patchwork/views/__init__.py +++ b/patchwork/views/__init__.py @@ -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)