[PATCH v2] models, templatetags: Make tag count column in patch list optional per tag

Andrew Donnellan andrew.donnellan at au1.ibm.com
Tue Dec 19 16:32:03 AEDT 2017


Add a field, show_column, to the Tag model to determine whether the tag
gets a tag count column in the patch list view. This allows the creation of
tags that will be collated when generating mboxes but won't take up space
in the patch list.

show_column will default to True to maintain the current behaviour by
default.

Suggested-by: Michael Ellerman <mpe at ellerman.id.au>
Closes: #142 ("Ability to add tags that don't also have a column in the UI")
Signed-off-by: Andrew Donnellan <andrew.donnellan at au1.ibm.com>
---
v1->v2:
  - fix 80 column limit in models.py
  - add the correct migration file that I intended to add...

---
 patchwork/fixtures/default_tags.xml          |  5 ++++-
 patchwork/migrations/0020_tag_show_column.py | 20 ++++++++++++++++++++
 patchwork/models.py                          |  3 +++
 patchwork/templatetags/patch.py              |  2 +-
 patchwork/templatetags/project.py            |  5 +++--
 5 files changed, 31 insertions(+), 4 deletions(-)
 create mode 100644 patchwork/migrations/0020_tag_show_column.py

diff --git a/patchwork/fixtures/default_tags.xml b/patchwork/fixtures/default_tags.xml
index ca5ccfd..baffd43 100644
--- a/patchwork/fixtures/default_tags.xml
+++ b/patchwork/fixtures/default_tags.xml
@@ -4,15 +4,18 @@
     <field type="CharField" name="name">Acked-by</field>
     <field type="CharField" name="pattern">^Acked-by:</field>
     <field type="CharField" name="abbrev">A</field>
+    <field type="BooleanField" name="show_column">True</field>
   </object>
   <object pk="2" model="patchwork.tag">
     <field type="CharField" name="name">Reviewed-by</field>
     <field type="CharField" name="pattern">^Reviewed-by:</field>
     <field type="CharField" name="abbrev">R</field>
+    <field type="BooleanField" name="show_column">True</field>
   </object>
   <object pk="3" model="patchwork.tag">
     <field type="CharField" name="name">Tested-by</field>
     <field type="CharField" name="pattern">^Tested-by:</field>
     <field type="CharField" name="abbrev">T</field>
+    <field type="BooleanField" name="show_column">True</field>
   </object>
-</django-objects>
\ No newline at end of file
+</django-objects>
diff --git a/patchwork/migrations/0020_tag_show_column.py b/patchwork/migrations/0020_tag_show_column.py
new file mode 100644
index 0000000..62fe80a
--- /dev/null
+++ b/patchwork/migrations/0020_tag_show_column.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.8 on 2017-12-19 04:03
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('patchwork', '0019_userprofile_show_ids'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='tag',
+            name='show_column',
+            field=models.BooleanField(default=True, help_text=b"Show a column displaying this tag's count in the patch list view"),
+        ),
+    ]
diff --git a/patchwork/models.py b/patchwork/models.py
index 7d413d9..b746588 100644
--- a/patchwork/models.py
+++ b/patchwork/models.py
@@ -230,6 +230,9 @@ class Tag(models.Model):
     abbrev = models.CharField(
         max_length=2, unique=True, help_text='Short (one-or-two letter)'
         ' abbreviation for the tag, used in table column headers')
+    show_column = models.BooleanField(help_text='Show a column displaying this'
+                                      ' tag\'s count in the patch list view',
+                                      default=True)
 
     @property
     def attr_name(self):
diff --git a/patchwork/templatetags/patch.py b/patchwork/templatetags/patch.py
index c65bd5e..4350e09 100644
--- a/patchwork/templatetags/patch.py
+++ b/patchwork/templatetags/patch.py
@@ -34,7 +34,7 @@ register = template.Library()
 def patch_tags(patch):
     counts = []
     titles = []
-    for tag in patch.project.tags:
+    for tag in [t for t in patch.project.tags if t.show_column]:
         count = getattr(patch, tag.attr_name)
         titles.append('%d %s' % (count, tag.name))
         if count == 0:
diff --git a/patchwork/templatetags/project.py b/patchwork/templatetags/project.py
index 689b486..32d8011 100644
--- a/patchwork/templatetags/project.py
+++ b/patchwork/templatetags/project.py
@@ -28,6 +28,7 @@ register = template.Library()
 
 @register.simple_tag(takes_context=True)
 def project_tags(context):
+    tags = [t for t in context['project'].tags if t.show_column]
     return mark_safe('<span title="%s">%s</span>' % (
-        ' / '.join([tag.name for tag in context['project'].tags]),
-        '/'.join([tag.abbrev for tag in context['project'].tags])))
+        ' / '.join([tag.name for tag in tags]),
+        '/'.join([tag.abbrev for tag in tags])))
-- 
2.11.0



More information about the Patchwork mailing list