From d1071b79e3a1a4ce2d8ba8c0a4eba37f24f3e626 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Fri, 21 Aug 2020 11:16:30 -0400 Subject: [PATCH] Closes #4360: Drop support for the Django template language in export templates --- docs/release-notes/version-2.10.md | 5 +++++ netbox/extras/admin.py | 7 +------ netbox/extras/api/serializers.py | 9 +-------- netbox/extras/filters.py | 2 +- ...8_exporttemplate_remove_template_language.py | 17 +++++++++++++++++ netbox/extras/models/models.py | 16 +--------------- netbox/extras/tests/test_filters.py | 10 +++------- 7 files changed, 29 insertions(+), 37 deletions(-) create mode 100644 netbox/extras/migrations/0048_exporttemplate_remove_template_language.py diff --git a/docs/release-notes/version-2.10.md b/docs/release-notes/version-2.10.md index eb25d083b..d289c7a05 100644 --- a/docs/release-notes/version-2.10.md +++ b/docs/release-notes/version-2.10.md @@ -4,4 +4,9 @@ ### Other Changes +* [#4360](https://github.com/netbox-community/netbox/issues/4360) - Remove support for the Django template language from export templates * [#4941](https://github.com/netbox-community/netbox/issues/4941) - `commit` argument is now required argument in a custom script's `run()` method + +### REST API Changes + +* extras.ExportTemplate: The `template_language` field has been removed diff --git a/netbox/extras/admin.py b/netbox/extras/admin.py index a198d03d5..de6a9b470 100644 --- a/netbox/extras/admin.py +++ b/netbox/extras/admin.py @@ -198,11 +198,6 @@ class ExportTemplateForm(forms.ModelForm): class Meta: model = ExportTemplate exclude = [] - help_texts = { - 'template_language': "Warning: Support for Django templating will be dropped in NetBox " - "v2.10. Jinja2 is strongly " - "recommended." - } def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -219,7 +214,7 @@ class ExportTemplateAdmin(admin.ModelAdmin): 'fields': ('content_type', 'name', 'description', 'mime_type', 'file_extension') }), ('Content', { - 'fields': ('template_language', 'template_code'), + 'fields': ('template_code',), 'classes': ('monospace',) }) ) diff --git a/netbox/extras/api/serializers.py b/netbox/extras/api/serializers.py index aa8f6ba69..a186f772f 100644 --- a/netbox/extras/api/serializers.py +++ b/netbox/extras/api/serializers.py @@ -71,17 +71,10 @@ class ExportTemplateSerializer(ValidatedModelSerializer): content_type = ContentTypeField( queryset=ContentType.objects.filter(FeatureQuery('export_templates').get_query()), ) - template_language = ChoiceField( - choices=TemplateLanguageChoices, - default=TemplateLanguageChoices.LANGUAGE_JINJA2 - ) class Meta: model = ExportTemplate - fields = [ - 'id', 'url', 'content_type', 'name', 'description', 'template_language', 'template_code', 'mime_type', - 'file_extension', - ] + fields = ['id', 'url', 'content_type', 'name', 'description', 'template_code', 'mime_type', 'file_extension'] # diff --git a/netbox/extras/filters.py b/netbox/extras/filters.py index e8962da01..288be10e2 100644 --- a/netbox/extras/filters.py +++ b/netbox/extras/filters.py @@ -101,7 +101,7 @@ class ExportTemplateFilterSet(BaseFilterSet): class Meta: model = ExportTemplate - fields = ['id', 'content_type', 'name', 'template_language'] + fields = ['id', 'content_type', 'name'] class TagFilterSet(BaseFilterSet): diff --git a/netbox/extras/migrations/0048_exporttemplate_remove_template_language.py b/netbox/extras/migrations/0048_exporttemplate_remove_template_language.py new file mode 100644 index 000000000..68ff8f5ab --- /dev/null +++ b/netbox/extras/migrations/0048_exporttemplate_remove_template_language.py @@ -0,0 +1,17 @@ +# Generated by Django 3.1 on 2020-08-21 15:13 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0047_tag_ordering'), + ] + + operations = [ + migrations.RemoveField( + model_name='exporttemplate', + name='template_language', + ), + ] diff --git a/netbox/extras/models/models.py b/netbox/extras/models/models.py index e57caf091..40ba64a67 100644 --- a/netbox/extras/models/models.py +++ b/netbox/extras/models/models.py @@ -283,11 +283,6 @@ class ExportTemplate(models.Model): max_length=200, blank=True ) - template_language = models.CharField( - max_length=50, - choices=TemplateLanguageChoices, - default=TemplateLanguageChoices.LANGUAGE_JINJA2 - ) template_code = models.TextField( help_text='The list of objects being exported is passed as a context variable named queryset.' ) @@ -321,16 +316,7 @@ class ExportTemplate(models.Model): context = { 'queryset': queryset } - - if self.template_language == TemplateLanguageChoices.LANGUAGE_DJANGO: - template = Template(self.template_code) - output = template.render(Context(context)) - - elif self.template_language == TemplateLanguageChoices.LANGUAGE_JINJA2: - output = render_jinja2(self.template_code, context) - - else: - return None + output = render_jinja2(self.template_code, context) # Replace CRLF-style line terminators output = output.replace('\r\n', '\n') diff --git a/netbox/extras/tests/test_filters.py b/netbox/extras/tests/test_filters.py index 72db138e2..deb41d628 100644 --- a/netbox/extras/tests/test_filters.py +++ b/netbox/extras/tests/test_filters.py @@ -55,9 +55,9 @@ class ExportTemplateTestCase(TestCase): content_types = ContentType.objects.filter(model__in=['site', 'rack', 'device']) export_templates = ( - ExportTemplate(name='Export Template 1', content_type=content_types[0], template_language=TemplateLanguageChoices.LANGUAGE_DJANGO, template_code='TESTING'), - ExportTemplate(name='Export Template 2', content_type=content_types[1], template_language=TemplateLanguageChoices.LANGUAGE_JINJA2, template_code='TESTING'), - ExportTemplate(name='Export Template 3', content_type=content_types[2], template_language=TemplateLanguageChoices.LANGUAGE_JINJA2, template_code='TESTING'), + ExportTemplate(name='Export Template 1', content_type=content_types[0], template_code='TESTING'), + ExportTemplate(name='Export Template 2', content_type=content_types[1], template_code='TESTING'), + ExportTemplate(name='Export Template 3', content_type=content_types[2], template_code='TESTING'), ) ExportTemplate.objects.bulk_create(export_templates) @@ -73,10 +73,6 @@ class ExportTemplateTestCase(TestCase): params = {'content_type': ContentType.objects.get(model='site').pk} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) - def test_template_language(self): - params = {'template_language': TemplateLanguageChoices.LANGUAGE_JINJA2} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - class ConfigContextTestCase(TestCase): queryset = ConfigContext.objects.all()