From 89e720cb7712d48dce40e6ecbc6d9fd5b4d2c38f Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 5 Dec 2019 17:01:00 -0500 Subject: [PATCH] ExportTemplate.template_language to slug (#3569) --- netbox/extras/api/serializers.py | 4 +-- netbox/extras/choices.py | 20 +++++++++++ netbox/extras/constants.py | 8 ----- .../0030_3569_objectchange_fields.py | 1 - .../0031_3569_exporttemplate_fields.py | 35 +++++++++++++++++++ netbox/extras/models.py | 7 ++-- 6 files changed, 61 insertions(+), 14 deletions(-) create mode 100644 netbox/extras/migrations/0031_3569_exporttemplate_fields.py diff --git a/netbox/extras/api/serializers.py b/netbox/extras/api/serializers.py index b38ac98fd..f648c2187 100644 --- a/netbox/extras/api/serializers.py +++ b/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: diff --git a/netbox/extras/choices.py b/netbox/extras/choices.py index 856798ea0..af5dedb82 100644 --- a/netbox/extras/choices.py +++ b/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, + } diff --git a/netbox/extras/constants.py b/netbox/extras/constants.py index 964577295..f087648fb 100644 --- a/netbox/extras/constants.py +++ b/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 diff --git a/netbox/extras/migrations/0030_3569_objectchange_fields.py b/netbox/extras/migrations/0030_3569_objectchange_fields.py index de6c616f7..c31f925e2 100644 --- a/netbox/extras/migrations/0030_3569_objectchange_fields.py +++ b/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 = ( diff --git a/netbox/extras/migrations/0031_3569_exporttemplate_fields.py b/netbox/extras/migrations/0031_3569_exporttemplate_fields.py new file mode 100644 index 000000000..2860f732e --- /dev/null +++ b/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 + ), + + ] diff --git a/netbox/extras/models.py b/netbox/extras/models.py index dc0f6210e..512eca3ea 100644 --- a/netbox/extras/models.py +++ b/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 queryset.'