From 4e66ede35ed87f960353d2abbc1a4a48f620e377 Mon Sep 17 00:00:00 2001 From: Jason Novinger Date: Wed, 19 Mar 2025 12:43:42 -0500 Subject: [PATCH] Addresses PR feedback - Adds `file_name` to `ExportTemplateBulkEditForm.nullable_fields` - Shortens max length of `ExportTemplate.file_name` to 200 chars - Adds tests for `ExportTemplateFilterSet.file_extension` --- netbox/extras/forms/bulk_edit.py | 2 +- .../migrations/0124_exporttemplate_file_name.py | 2 +- netbox/extras/models/models.py | 10 +++++----- netbox/extras/tests/test_filtersets.py | 15 ++++++++++++++- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/netbox/extras/forms/bulk_edit.py b/netbox/extras/forms/bulk_edit.py index 6b3d185cb..6891edc5d 100644 --- a/netbox/extras/forms/bulk_edit.py +++ b/netbox/extras/forms/bulk_edit.py @@ -170,7 +170,7 @@ class ExportTemplateBulkEditForm(BulkEditForm): widget=BulkEditNullBooleanSelect() ) - nullable_fields = ('description', 'mime_type', 'file_extension') + nullable_fields = ('description', 'mime_type', 'file_name', 'file_extension') class SavedFilterBulkEditForm(BulkEditForm): diff --git a/netbox/extras/migrations/0124_exporttemplate_file_name.py b/netbox/extras/migrations/0124_exporttemplate_file_name.py index d8b1d6348..f4c1f3986 100644 --- a/netbox/extras/migrations/0124_exporttemplate_file_name.py +++ b/netbox/extras/migrations/0124_exporttemplate_file_name.py @@ -11,6 +11,6 @@ class Migration(migrations.Migration): migrations.AddField( model_name='exporttemplate', name='file_name', - field=models.CharField(blank=True, max_length=1000), + field=models.CharField(blank=True, max_length=200), ), ] diff --git a/netbox/extras/models/models.py b/netbox/extras/models/models.py index ff05f2c6d..3cae54f29 100644 --- a/netbox/extras/models/models.py +++ b/netbox/extras/models/models.py @@ -409,17 +409,17 @@ class ExportTemplate(SyncedDataMixin, CloningMixin, ExportTemplatesMixin, Change verbose_name=_('MIME type'), help_text=_('Defaults to text/plain; charset=utf-8') ) + file_name = models.CharField( + max_length=200, + blank=True, + help_text=_('Filename to give to the rendered export file') + ) file_extension = models.CharField( verbose_name=_('file extension'), max_length=15, blank=True, help_text=_('Extension to append to the rendered filename') ) - file_name = models.CharField( - max_length=1000, - blank=True, - help_text=_('Filename to give to the rendered export file') - ) as_attachment = models.BooleanField( verbose_name=_('as attachment'), default=True, diff --git a/netbox/extras/tests/test_filtersets.py b/netbox/extras/tests/test_filtersets.py index d413348d2..ff4543bd2 100644 --- a/netbox/extras/tests/test_filtersets.py +++ b/netbox/extras/tests/test_filtersets.py @@ -624,7 +624,10 @@ class ExportTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): export_templates = ( ExportTemplate(name='Export Template 1', template_code='TESTING', description='foobar1'), - ExportTemplate(name='Export Template 2', template_code='TESTING', description='foobar2'), + ExportTemplate( + name='Export Template 2', template_code='TESTING', description='foobar2', + file_name='export_template_2', file_extension='nagios', + ), ExportTemplate(name='Export Template 3', template_code='TESTING', file_name='export_filename'), ) ExportTemplate.objects.bulk_create(export_templates) @@ -656,6 +659,16 @@ class ExportTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'file_name': ['export_filename']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_file_extension(self): + params = {'file_extension': ['nagios']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + params = {'file_name': ['export_template_2'], 'file_extension': ['nagios']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + params = {'file_name': 'export_filename', 'file_extension': ['nagios']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) + class ImageAttachmentTestCase(TestCase, ChangeLoggedFilterSetTests): queryset = ImageAttachment.objects.all()