From 63d3ce6e77e6aa9c0ac82e78755cf2a417ff0ade Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 12 Feb 2024 10:14:11 -0800 Subject: [PATCH] 14438 fix migration --- .../extras/migrations/0108_script_models.py | 59 ++++++++++++------- 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/netbox/extras/migrations/0108_script_models.py b/netbox/extras/migrations/0108_script_models.py index f83fbe165..4e381a25f 100644 --- a/netbox/extras/migrations/0108_script_models.py +++ b/netbox/extras/migrations/0108_script_models.py @@ -4,6 +4,31 @@ from django.db import migrations, models import django.db.models.deletion +def update_event_rules(apps, schema_editor): + from extras.models import ScriptModule + Script = apps.get_model('extras', 'Script') + ContentType = apps.get_model('contenttypes', 'ContentType') + ct = ContentType.objects.filter(app_label='extras', model='script').first() + + 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') + obj, created = Script.objects.get_or_create( + module_id=rule.action_object_id, + name=name, + ) + + if created: + # script in action_parameters was deleted? + obj.is_valid = False + obj.save() + + rule.action_object_type = ct + rule.action_object_id = obj.id + rule.save() + + def update_scripts(apps, schema_editor): from extras.models import ScriptModule ScriptModuleNew = apps.get_model('extras', 'ScriptModule') @@ -22,24 +47,6 @@ def update_scripts(apps, schema_editor): if ct: 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') - obj, created = Script.objects.get_or_create( - module_id=rule.action_object_id, - name=name, - ) - - if created: - # script in action_parameters was deleted? - obj.is_valid = False - obj.save() - - rule.action_object_type = ct - rule.action_object_id = obj.id - rule.save() - class Migration(migrations.Migration): @@ -72,8 +79,18 @@ class Migration(migrations.Migration): code=update_scripts, reverse_code=migrations.RunPython.noop ), - migrations.RemoveField( - model_name='eventrule', - name='action_parameters', + migrations.SeparateDatabaseAndState( + database_operations=[ + migrations.RunPython( + code=update_event_rules, + reverse_code=migrations.RunPython.noop + ), + ], + state_operations=[ + migrations.RemoveField( + model_name='eventrule', + name='action_parameters', + ), + ] ), ]