From 6cda55da0660eedfa301d91746f1dcc020364ead Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 30 Dec 2021 09:41:35 -0500 Subject: [PATCH] Fixes #8187: Fix rendering of tags column in object tables --- docs/release-notes/version-3.1.md | 4 +++ netbox/utilities/tables.py | 3 ++- netbox/utilities/tests/test_tables.py | 36 +++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 netbox/utilities/tests/test_tables.py diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 61da98952..25b0a1353 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -2,6 +2,10 @@ ## v3.1.4 (FUTURE) +### Bug Fixes + +* [#8187](https://github.com/netbox-community/netbox/issues/8187) - Fix rendering of tags column in object tables + --- ## v3.1.3 (2021-12-29) diff --git a/netbox/utilities/tables.py b/netbox/utilities/tables.py index 183d64023..9000af110 100644 --- a/netbox/utilities/tables.py +++ b/netbox/utilities/tables.py @@ -381,8 +381,9 @@ class TagColumn(tables.TemplateColumn): Display a list of tags assigned to the object. """ template_code = """ + {% load helpers %} {% for tag in value.all %} - {% include 'utilities/templatetags/tag.html' %} + {% tag tag url_name=url_name %} {% empty %} {% endfor %} diff --git a/netbox/utilities/tests/test_tables.py b/netbox/utilities/tests/test_tables.py new file mode 100644 index 000000000..119587ff8 --- /dev/null +++ b/netbox/utilities/tests/test_tables.py @@ -0,0 +1,36 @@ +from django.template import Context, Template +from django.test import TestCase + +from dcim.models import Site +from utilities.tables import BaseTable, TagColumn +from utilities.testing import create_tags + + +class TagColumnTable(BaseTable): + tags = TagColumn(url_name='dcim:site_list') + + class Meta(BaseTable.Meta): + model = Site + fields = ('pk', 'name', 'tags',) + default_columns = fields + + +class TagColumnTest(TestCase): + + @classmethod + def setUpTestData(cls): + tags = create_tags('Alpha', 'Bravo', 'Charlie') + + sites = [ + Site(name=f'Site {i}', slug=f'site-{i}') for i in range(1, 6) + ] + Site.objects.bulk_create(sites) + for site in sites: + site.tags.add(*tags) + + def test_tagcolumn(self): + template = Template('{% load render_table from django_tables2 %}{% render_table table %}') + context = Context({ + 'table': TagColumnTable(Site.objects.all(), orderable=False) + }) + template.render(context)