Fixes #8187: Fix rendering of tags column in object tables

This commit is contained in:
jeremystretch 2021-12-30 09:41:35 -05:00
parent c3f2fee633
commit 6cda55da06
3 changed files with 42 additions and 1 deletions

View File

@ -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)

View File

@ -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 %}
<span class="text-muted">&mdash;</span>
{% endfor %}

View File

@ -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)