Jeremy Stretch 2 лет назад
Родитель
Сommit
cfc20f910e
1 измененных файлов с 30 добавлено и 20 удалено
  1. 30 20
      netbox/extras/migrations/0101_eventrule.py

+ 30 - 20
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',