From cfc20f910ef69813971457911925d4089feaa507 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 4 Dec 2023 10:21:37 -0500 Subject: [PATCH] #14132: Fix migration --- netbox/extras/migrations/0101_eventrule.py | 50 +++++++++++++--------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/netbox/extras/migrations/0101_eventrule.py b/netbox/extras/migrations/0101_eventrule.py index 92ae0e52b..a3ce08591 100644 --- a/netbox/extras/migrations/0101_eventrule.py +++ b/netbox/extras/migrations/0101_eventrule.py @@ -11,9 +11,11 @@ def move_webhooks(apps, schema_editor): Webhook = apps.get_model("extras", "Webhook") EventRule = apps.get_model("extras", "EventRule") + webhook_ct = ContentType.objects.get_for_model(Webhook).pk for webhook in Webhook.objects.all(): event = EventRule() + # Replicate attributes from Webhook instance event.name = webhook.name event.type_create = webhook.type_create event.type_update = webhook.type_update @@ -24,7 +26,7 @@ def move_webhooks(apps, schema_editor): event.conditions = webhook.conditions event.action_type = EventRuleActionChoices.WEBHOOK - event.action_object_type_id = ContentType.objects.get_for_model(webhook).id + event.action_object_type_id = webhook_ct event.action_object_id = webhook.id event.save() event.content_types.add(*webhook.content_types.all()) @@ -37,6 +39,8 @@ class Migration(migrations.Migration): ] operations = [ + + # Create the EventRule model migrations.CreateModel( name='EventRule', fields=[ @@ -68,7 +72,30 @@ class Migration(migrations.Migration): 'ordering': ('name',), }, ), + migrations.AddField( + model_name='eventrule', + name='action_object_type', + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name='eventrule_actions', + to='contenttypes.contenttype', + ), + ), + migrations.AddField( + model_name='eventrule', + name='content_types', + field=models.ManyToManyField(related_name='eventrules', to='contenttypes.contenttype'), + ), + migrations.AddField( + model_name='eventrule', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + + # Replicate Webhook data migrations.RunPython(move_webhooks), + + # Remove obsolete fields from Webhook migrations.RemoveConstraint( model_name='webhook', name='extras_webhook_unique_payload_url_types', @@ -105,25 +132,8 @@ class Migration(migrations.Migration): model_name='webhook', name='type_update', ), - migrations.AddField( - model_name='eventrule', - name='action_object_type', - field=models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name='eventrule_actions', - to='contenttypes.contenttype', - ), - ), - migrations.AddField( - model_name='eventrule', - name='content_types', - field=models.ManyToManyField(related_name='eventrules', to='contenttypes.contenttype'), - ), - migrations.AddField( - model_name='eventrule', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), + + # Add description field to Webhook migrations.AddField( model_name='webhook', name='description',