diff --git a/netbox/dcim/migrations/0076_add_generic_connected_endpoint.py b/netbox/dcim/migrations/0076_add_generic_connected_endpoint.py new file mode 100644 index 000000000..455df91ac --- /dev/null +++ b/netbox/dcim/migrations/0076_add_generic_connected_endpoint.py @@ -0,0 +1,27 @@ +# Generated by Django 2.2.5 on 2019-10-06 19:01 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + ('dcim', '0075_cable_devices'), + ] + + operations = [ + migrations.AddField( + model_name='interface', + name='connected_endpoint_id', + field=models.PositiveIntegerField(blank=True, null=True), + ), + migrations.AddField( + model_name='interface', + name='connected_endpoint_type', + field=models.ForeignKey(blank=True, limit_choices_to={ + 'model__in': ['consoleport', 'consoleserverport', 'interface', 'poweroutlet', 'powerport', 'frontport', + 'rearport', 'circuittermination'] + }, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.ContentType'), + ), + ] diff --git a/netbox/dcim/migrations/0076_generic_connected_endpoint.py b/netbox/dcim/migrations/0076_generic_connected_endpoint.py deleted file mode 100644 index 106e0b6ea..000000000 --- a/netbox/dcim/migrations/0076_generic_connected_endpoint.py +++ /dev/null @@ -1,62 +0,0 @@ -# Generated by Django 2.2.5 on 2019-10-06 19:01 - -import django.db.models.deletion -from django.db import migrations, models - - -def connected_interface_to_endpoint(apps, schema_editor): - Interface = apps.get_model('dcim', 'Interface') - ContentType = apps.get_model('contenttypes', 'ContentType') - - model_type = ContentType.objects.get_for_model(Interface) - for interface in Interface.objects.exclude(_connected_interface=None): - interface.connected_endpoint_type = model_type - interface.connected_endpoint_id = interface._connected_interface.pk - interface.save() - - -def connected_circuittermination_to_endpoint(apps, schema_editor): - Interface = apps.get_model('dcim', 'Interface') - ContentType = apps.get_model('contenttypes', 'ContentType') - CircuitTermination = apps.get_model('circuits', 'CircuitTermination') - - model_type = ContentType.objects.get_for_model(CircuitTermination) - for interface in Interface.objects.exclude(_connected_circuittermination=None): - interface.connected_endpoint_type = model_type - interface.connected_endpoint_id = interface._connected_circuittermination.pk - interface.save() - - -class Migration(migrations.Migration): - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ('dcim', '0075_cable_devices'), - ] - - operations = [ - migrations.AddField( - model_name='interface', - name='connected_endpoint_id', - field=models.PositiveIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='interface', - name='connected_endpoint_type', - field=models.ForeignKey(blank=True, limit_choices_to={ - 'model__in': ['consoleport', 'consoleserverport', 'interface', 'poweroutlet', 'powerport', 'frontport', - 'rearport', 'circuittermination'] - }, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.ContentType'), - ), - - migrations.RunPython(connected_interface_to_endpoint), - migrations.RunPython(connected_circuittermination_to_endpoint), - - migrations.RemoveField( - model_name='interface', - name='_connected_circuittermination', - ), - migrations.RemoveField( - model_name='interface', - name='_connected_interface', - ), - ] diff --git a/netbox/dcim/migrations/0077_migrate_connected_endpoint.py b/netbox/dcim/migrations/0077_migrate_connected_endpoint.py new file mode 100644 index 000000000..ad714359e --- /dev/null +++ b/netbox/dcim/migrations/0077_migrate_connected_endpoint.py @@ -0,0 +1,61 @@ +# Generated by Django 2.2.5 on 2019-10-06 19:01 + +from django.db import migrations + + +def connected_interface_to_endpoint(apps, schema_editor): + interface_model = apps.get_model('dcim', 'Interface') + contenttype_model = apps.get_model('contenttypes', 'ContentType') + + model_type = contenttype_model.objects.get_for_model(interface_model) + for interface in interface_model.objects.exclude(_connected_interface=None): + interface.connected_endpoint_type = model_type + interface.connected_endpoint_id = interface._connected_interface.pk + interface.save() + + +def connected_endpoint_to_interface(apps, schema_editor): + interface_model = apps.get_model('dcim', 'Interface') + contenttype_model = apps.get_model('contenttypes', 'ContentType') + + model_type = contenttype_model.objects.get_for_model(interface_model) + for interface in interface_model.objects.filter(connected_endpoint_type=model_type): + interface._connected_interface = interface.connected_endpoint + interface.save() + + +def connected_circuittermination_to_endpoint(apps, schema_editor): + interface_model = apps.get_model('dcim', 'Interface') + contenttype_model = apps.get_model('contenttypes', 'ContentType') + circuittermination_model = apps.get_model('circuits', 'CircuitTermination') + + model_type = contenttype_model.objects.get_for_model(circuittermination_model) + for interface in interface_model.objects.exclude(_connected_circuittermination=None): + interface.connected_endpoint_type = model_type + interface.connected_endpoint_id = interface._connected_circuittermination.pk + interface.save() + + +def connected_endpoint_to_circuittermination(apps, schema_editor): + interface_model = apps.get_model('dcim', 'Interface') + contenttype_model = apps.get_model('contenttypes', 'ContentType') + circuittermination_model = apps.get_model('circuits', 'CircuitTermination') + + model_type = contenttype_model.objects.get_for_model(circuittermination_model) + for interface in interface_model.objects.filter(connected_endpoint_type=model_type): + interface._connected_circuittermination = interface.connected_endpoint + interface.save() + + +class Migration(migrations.Migration): + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + ('dcim', '0076_add_generic_connected_endpoint'), + ] + + operations = [ + migrations.RunPython(connected_interface_to_endpoint, + connected_endpoint_to_interface), + migrations.RunPython(connected_circuittermination_to_endpoint, + connected_endpoint_to_circuittermination), + ] diff --git a/netbox/dcim/migrations/0078_remove_connected_interface_circuittermination.py b/netbox/dcim/migrations/0078_remove_connected_interface_circuittermination.py new file mode 100644 index 000000000..38ff1b013 --- /dev/null +++ b/netbox/dcim/migrations/0078_remove_connected_interface_circuittermination.py @@ -0,0 +1,21 @@ +# Generated by Django 2.2.5 on 2019-10-06 19:01 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + ('dcim', '0077_migrate_connected_endpoint'), + ] + + operations = [ + migrations.RemoveField( + model_name='interface', + name='_connected_circuittermination', + ), + migrations.RemoveField( + model_name='interface', + name='_connected_interface', + ), + ]