Răsfoiți Sursa

ExportTemplate.template_language to slug (#3569)

Jeremy Stretch 6 ani în urmă
părinte
comite
89e720cb77

+ 2 - 2
netbox/extras/api/serializers.py

@@ -57,8 +57,8 @@ class RenderedGraphSerializer(serializers.ModelSerializer):
 
 class ExportTemplateSerializer(ValidatedModelSerializer):
     template_language = ChoiceField(
-        choices=TEMPLATE_LANGUAGE_CHOICES,
-        default=TEMPLATE_LANGUAGE_JINJA2
+        choices=ExportTemplateLanguageChoices,
+        default=ExportTemplateLanguageChoices.LANGUAGE_JINJA2
     )
 
     class Meta:

+ 20 - 0
netbox/extras/choices.py

@@ -98,3 +98,23 @@ class ObjectChangeActionChoices(ChoiceSet):
         ACTION_UPDATE: 2,
         ACTION_DELETE: 3,
     }
+
+
+#
+# ExportTemplates
+#
+
+class ExportTemplateLanguageChoices(ChoiceSet):
+
+    LANGUAGE_DJANGO = 'django'
+    LANGUAGE_JINJA2 = 'jinja2'
+
+    CHOICES = (
+        (LANGUAGE_DJANGO, 'Django'),
+        (LANGUAGE_JINJA2, 'Jinja2'),
+    )
+
+    LEGACY_MAP = {
+        LANGUAGE_DJANGO: 10,
+        LANGUAGE_JINJA2: 20,
+    }

+ 0 - 8
netbox/extras/constants.py

@@ -85,14 +85,6 @@ EXPORTTEMPLATE_MODELS = [
     'virtualization.virtualmachine',
 ]
 
-# ExportTemplate language choices
-TEMPLATE_LANGUAGE_DJANGO = 10
-TEMPLATE_LANGUAGE_JINJA2 = 20
-TEMPLATE_LANGUAGE_CHOICES = (
-    (TEMPLATE_LANGUAGE_DJANGO, 'Django'),
-    (TEMPLATE_LANGUAGE_JINJA2, 'Jinja2'),
-)
-
 # Report logging levels
 LOG_DEFAULT = 0
 LOG_SUCCESS = 10

+ 0 - 1
netbox/extras/migrations/0030_3569_objectchange_fields.py

@@ -1,5 +1,4 @@
 from django.db import migrations, models
-import django.db.models.deletion
 
 
 OBJECTCHANGE_ACTION_CHOICES = (

+ 35 - 0
netbox/extras/migrations/0031_3569_exporttemplate_fields.py

@@ -0,0 +1,35 @@
+from django.db import migrations, models
+
+
+EXPORTTEMPLATE_LANGUAGE_CHOICES = (
+    (10, 'django'),
+    (20, 'jinja2'),
+)
+
+
+def exporttemplate_language_to_slug(apps, schema_editor):
+    ExportTemplate = apps.get_model('extras', 'ExportTemplate')
+    for id, slug in EXPORTTEMPLATE_LANGUAGE_CHOICES:
+        ExportTemplate.objects.filter(template_language=str(id)).update(template_language=slug)
+
+
+class Migration(migrations.Migration):
+    atomic = False
+
+    dependencies = [
+        ('extras', '0030_3569_objectchange_fields'),
+    ]
+
+    operations = [
+
+        # ExportTemplate.template_language
+        migrations.AlterField(
+            model_name='exporttemplate',
+            name='template_language',
+            field=models.CharField(default='jinja2', max_length=50),
+        ),
+        migrations.RunPython(
+            code=exporttemplate_language_to_slug
+        ),
+
+    ]

+ 4 - 3
netbox/extras/models.py

@@ -464,9 +464,10 @@ class ExportTemplate(models.Model):
         max_length=200,
         blank=True
     )
-    template_language = models.PositiveSmallIntegerField(
-        choices=TEMPLATE_LANGUAGE_CHOICES,
-        default=TEMPLATE_LANGUAGE_JINJA2
+    template_language = models.CharField(
+        max_length=50,
+        choices=ExportTemplateLanguageChoices,
+        default=ExportTemplateLanguageChoices.LANGUAGE_JINJA2
     )
     template_code = models.TextField(
         help_text='The list of objects being exported is passed as a context variable named <code>queryset</code>.'