Pārlūkot izejas kodu

Fixes #4235: Fix API representation of content_type for export templates

Jeremy Stretch 6 gadi atpakaļ
vecāks
revīzija
11d012de4e

+ 1 - 0
docs/release-notes/version-2.7.md

@@ -5,6 +5,7 @@
 * [#4224](https://github.com/netbox-community/netbox/issues/4224) - Fix display of rear device image if front image is not defined 
 * [#4228](https://github.com/netbox-community/netbox/issues/4228) - Improve fit of device images in rack elevations
 * [#4232](https://github.com/netbox-community/netbox/issues/4232) - Enforce consistent background striping in rack elevations
+* [#4235](https://github.com/netbox-community/netbox/issues/4235) - Fix API representation of `content_type` for export templates
 
 ---
 

+ 3 - 0
netbox/extras/api/serializers.py

@@ -62,6 +62,9 @@ class RenderedGraphSerializer(serializers.ModelSerializer):
 #
 
 class ExportTemplateSerializer(ValidatedModelSerializer):
+    content_type = ContentTypeField(
+        queryset=ContentType.objects.filter(EXPORTTEMPLATE_MODELS),
+    )
     template_language = ChoiceField(
         choices=TemplateLanguageChoices,
         default=TemplateLanguageChoices.LANGUAGE_JINJA2

+ 10 - 10
netbox/extras/tests/test_api.py

@@ -163,17 +163,17 @@ class ExportTemplateTest(APITestCase):
 
         super().setUp()
 
-        self.content_type = ContentType.objects.get_for_model(Device)
+        content_type = ContentType.objects.get_for_model(Device)
         self.exporttemplate1 = ExportTemplate.objects.create(
-            content_type=self.content_type, name='Test Export Template 1',
+            content_type=content_type, name='Test Export Template 1',
             template_code='{% for obj in queryset %}{{ obj.name }}\n{% endfor %}'
         )
         self.exporttemplate2 = ExportTemplate.objects.create(
-            content_type=self.content_type, name='Test Export Template 2',
+            content_type=content_type, name='Test Export Template 2',
             template_code='{% for obj in queryset %}{{ obj.name }}\n{% endfor %}'
         )
         self.exporttemplate3 = ExportTemplate.objects.create(
-            content_type=self.content_type, name='Test Export Template 3',
+            content_type=content_type, name='Test Export Template 3',
             template_code='{% for obj in queryset %}{{ obj.name }}\n{% endfor %}'
         )
 
@@ -194,7 +194,7 @@ class ExportTemplateTest(APITestCase):
     def test_create_exporttemplate(self):
 
         data = {
-            'content_type': self.content_type.pk,
+            'content_type': 'dcim.device',
             'name': 'Test Export Template 4',
             'template_code': '{% for obj in queryset %}{{ obj.name }}\n{% endfor %}',
         }
@@ -205,7 +205,7 @@ class ExportTemplateTest(APITestCase):
         self.assertHttpStatus(response, status.HTTP_201_CREATED)
         self.assertEqual(ExportTemplate.objects.count(), 4)
         exporttemplate4 = ExportTemplate.objects.get(pk=response.data['id'])
-        self.assertEqual(exporttemplate4.content_type_id, data['content_type'])
+        self.assertEqual(exporttemplate4.content_type, ContentType.objects.get_for_model(Device))
         self.assertEqual(exporttemplate4.name, data['name'])
         self.assertEqual(exporttemplate4.template_code, data['template_code'])
 
@@ -213,17 +213,17 @@ class ExportTemplateTest(APITestCase):
 
         data = [
             {
-                'content_type': self.content_type.pk,
+                'content_type': 'dcim.device',
                 'name': 'Test Export Template 4',
                 'template_code': '{% for obj in queryset %}{{ obj.name }}\n{% endfor %}',
             },
             {
-                'content_type': self.content_type.pk,
+                'content_type': 'dcim.device',
                 'name': 'Test Export Template 5',
                 'template_code': '{% for obj in queryset %}{{ obj.name }}\n{% endfor %}',
             },
             {
-                'content_type': self.content_type.pk,
+                'content_type': 'dcim.device',
                 'name': 'Test Export Template 6',
                 'template_code': '{% for obj in queryset %}{{ obj.name }}\n{% endfor %}',
             },
@@ -241,7 +241,7 @@ class ExportTemplateTest(APITestCase):
     def test_update_exporttemplate(self):
 
         data = {
-            'content_type': self.content_type.pk,
+            'content_type': 'dcim.device',
             'name': 'Test Export Template X',
             'template_code': '{% for obj in queryset %}{{ obj.name }}\n{% endfor %}',
         }