Daniel Sheppard vor 3 Monaten
Ursprung
Commit
905656f13e

+ 47 - 0
netbox/ipam/migrations/0084_prefix_ipam_prefix_delete_prefix_ipam_prefix_insert.py

@@ -0,0 +1,47 @@
+# Generated by Django 5.2.5 on 2025-11-06 03:24
+
+import pgtrigger.compiler
+import pgtrigger.migrations
+from django.db import migrations
+
+from development.utilities import disconnect_signals
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('ipam', '0083_ipaddress_iprange_prefix_parent_data'),
+    ]
+
+    operations = [
+        migrations.RunPython(disconnect_signals, reverse_code=migrations.RunPython.noop),
+        pgtrigger.migrations.AddTrigger(
+            model_name='prefix',
+            trigger=pgtrigger.compiler.Trigger(
+                name='ipam_prefix_delete',
+                sql=pgtrigger.compiler.UpsertTriggerSql(
+                    func="\n-- Update Child Prefix's with Prefix's PARENT\nUPDATE ipam_prefix SET parent_id=OLD.parent_id WHERE parent_id=OLD.id;\nRETURN OLD;\n",
+                    hash='899e1943cb201118be7ef02f36f49747224774f2',
+                    operation='DELETE',
+                    pgid='pgtrigger_ipam_prefix_delete_e7810',
+                    table='ipam_prefix',
+                    when='BEFORE',
+                ),
+            ),
+        ),
+        pgtrigger.migrations.AddTrigger(
+            model_name='prefix',
+            trigger=pgtrigger.compiler.Trigger(
+                name='ipam_prefix_insert',
+                sql=pgtrigger.compiler.UpsertTriggerSql(
+                    func="\nUPDATE ipam_prefix\nSET parent_id=NEW.id \nWHERE \n    prefix << NEW.prefix\n    AND\n    (\n        (vrf_id = NEW.vrf_id OR (vrf_id IS NULL AND NEW.vrf_id IS NULL))\n        OR\n        (\n            NEW.vrf_id IS NULL\n            AND\n            NEW.status = 'container'\n            AND\n            NOT EXISTS(\n                SELECT 1 FROM ipam_prefix p WHERE p.prefix >> ipam_prefix.prefix AND p.vrf_id = ipam_prefix.vrf_id\n            )\n        )\n    )\n    AND id != NEW.id\n    AND NOT EXISTS (\n        SELECT 1 FROM ipam_prefix p\n        WHERE\n            p.prefix >> ipam_prefix.prefix\n            AND p.prefix << NEW.prefix\n            AND (\n                (p.vrf_id = ipam_prefix.vrf_id OR (p.vrf_id IS NULL AND ipam_prefix.vrf_id IS NULL))\n                OR\n                (p.vrf_id IS NULL AND p.status = 'container')\n            )\n            AND p.id != NEW.id\n    )\n;\nRETURN NEW;\n",
+                    hash='0e05bbe61861227a9eb710b6c94bae9e0cc7119e',
+                    operation='INSERT',
+                    pgid='pgtrigger_ipam_prefix_insert_46c72',
+                    table='ipam_prefix',
+                    when='AFTER',
+                ),
+            ),
+        ),
+        migrations.RunPython(migrations.RunPython.noop, reverse_code=disconnect_signals),
+    ]