From 0100857e9286a94a665333488d13e49cd3d233b4 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 12 Feb 2024 07:57:38 -0800 Subject: [PATCH] 14438 update migration for event rules --- netbox/extras/api/serializers.py | 2 +- netbox/extras/migrations/0108_script_models.py | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/netbox/extras/api/serializers.py b/netbox/extras/api/serializers.py index 66925b388..b1a53a886 100644 --- a/netbox/extras/api/serializers.py +++ b/netbox/extras/api/serializers.py @@ -522,7 +522,7 @@ class ScriptSerializer(ValidatedModelSerializer): class Meta: model = Script fields = [ - 'id', 'url', 'module', 'name', 'description', 'vars', 'result', 'display', + 'id', 'url', 'module', 'name', 'description', 'vars', 'result', 'display', 'is_valid', ] @extend_schema_field(serializers.JSONField(allow_null=True)) diff --git a/netbox/extras/migrations/0108_script_models.py b/netbox/extras/migrations/0108_script_models.py index 323c7cbad..b21dc7768 100644 --- a/netbox/extras/migrations/0108_script_models.py +++ b/netbox/extras/migrations/0108_script_models.py @@ -1,5 +1,6 @@ # Generated by Django 4.2.9 on 2024-02-05 21:37 +from django.contrib.contenttypes.models import ContentType from django.db import migrations, models import django.db.models.deletion @@ -8,7 +9,7 @@ def update_scripts(apps, schema_editor): from extras.models import ScriptModule ScriptModuleNew = apps.get_model('extras', 'ScriptModule') Script = apps.get_model('extras', 'Script') - ContentType = apps.get_model('contenttypes', 'ContentType') + # ContentType = apps.get_model('contenttypes', 'ContentType') ct = ContentType.objects.filter(app_label='extras', model='script').first() for module in ScriptModule.objects.all(): @@ -19,8 +20,18 @@ def update_scripts(apps, schema_editor): ) # update all jobs associated with this module/name to point to the new script obj - if ct: - module.jobs.filter(name=script).update(object_type=ct, object_id=obj.id) + module.jobs.filter(name=script).update(object_type=ct, object_id=obj.id) + + EventRule = apps.get_model('extras', 'EventRule') + ct_script_module = ContentType.objects.filter(app_label='extras', model='scriptmodule').first() + for rule in EventRule.objects.filter(action_object_type=ct_script_module): + name = rule.action_parameters.get('script_name') + if name: + obj = Script.objects.filter(module=rule.action_object, name=name).first() + if obj: + rule.action_paramter = obj + rule.action_parameters.pop(name, None) + rule.save() class Migration(migrations.Migration):