From 9a80a491c90bcdc3341a7c75f2f8bae93e32fba9 Mon Sep 17 00:00:00 2001 From: Christoph Schneider Date: Thu, 11 Aug 2022 14:11:41 +0200 Subject: [PATCH] re-enable markdown in custom columns --- netbox/netbox/tables/columns.py | 25 +++++++++++++++++++++++++ netbox/netbox/tables/tables.py | 3 ++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/netbox/netbox/tables/columns.py b/netbox/netbox/tables/columns.py index f78b9f37c..cc20bdd0c 100644 --- a/netbox/netbox/tables/columns.py +++ b/netbox/netbox/tables/columns.py @@ -550,3 +550,28 @@ class MarkdownColumn(tables.TemplateColumn): def value(self, value): return value + + +class CustomFieldMarkdownColumn(tables.TemplateColumn): + """ + Render a Markdown string in a longtext custom column. + """ + template_code = """ + {% if value %} + {{ value|markdown }} + {% else %} + — + {% endif %} + """ + + def __init__(self, customfield, *args, **kwargs): + self.customfield = customfield + kwargs['accessor'] = Accessor(f'custom_field_data__{customfield.name}') + kwargs['template_code'] = self.template_code + if 'verbose_name' not in kwargs: + kwargs['verbose_name'] = customfield.label or customfield.name + + super().__init__(*args, **kwargs) + + def value(self, value): + return value diff --git a/netbox/netbox/tables/tables.py b/netbox/netbox/tables/tables.py index 8c5fb039c..d55038c4d 100644 --- a/netbox/netbox/tables/tables.py +++ b/netbox/netbox/tables/tables.py @@ -7,6 +7,7 @@ from django.db.models.fields.related import RelatedField from django_tables2.data import TableQuerysetData from extras.models import CustomField, CustomLink +from extras.choices import CustomFieldTypeChoices from netbox.tables import columns from utilities.paginator import EnhancedPaginator, get_paginate_count @@ -180,7 +181,7 @@ class NetBoxTable(BaseTable): content_type = ContentType.objects.get_for_model(self._meta.model) custom_fields = CustomField.objects.filter(content_types=content_type) extra_columns.extend([ - (f'cf_{cf.name}', columns.CustomFieldColumn(cf)) for cf in custom_fields + (f'cf_{cf.name}', columns.CustomFieldMarkdownColumn(cf) if cf.type == CustomFieldTypeChoices.TYPE_LONGTEXT else columns.CustomFieldColumn(cf)) for cf in custom_fields ]) custom_links = CustomLink.objects.filter(content_type=content_type, enabled=True) extra_columns.extend([