From 26071903c1d98a3dfe6f40d10d6020b807c31069 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 3 Oct 2019 18:49:56 -0400 Subject: [PATCH] Add stdout progress logging to cable migration --- netbox/dcim/migrations/0075_cable_devices.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/netbox/dcim/migrations/0075_cable_devices.py b/netbox/dcim/migrations/0075_cable_devices.py index d93f1ab7c..45a94389c 100644 --- a/netbox/dcim/migrations/0075_cable_devices.py +++ b/netbox/dcim/migrations/0075_cable_devices.py @@ -5,21 +5,32 @@ import django.db.models.deletion def cache_cable_devices(apps, schema_editor): Cable = apps.get_model('dcim', 'Cable') + print("\nUpdatng cable device terminations...") + cable_count = Cable.objects.count() + # Cache A/B termination devices on all existing Cables. Note that the custom save() method on Cable is not # available during a migration, so we replicate its logic here. - for cable in Cable.objects.all(): + for i, cable in enumerate(Cable.objects.all(), start=1): + + if not i % 1000: + print("[{}/{}]".format(i, cable_count)) termination_a_model = apps.get_model(cable.termination_a_type.app_label, cable.termination_a_type.model) + termination_a_device = None if hasattr(termination_a_model, 'device'): termination_a = termination_a_model.objects.get(pk=cable.termination_a_id) - cable._termination_a_device = termination_a.device + termination_a_device = termination_a.device termination_b_model = apps.get_model(cable.termination_b_type.app_label, cable.termination_b_type.model) + termination_b_device = None if hasattr(termination_b_model, 'device'): termination_b = termination_b_model.objects.get(pk=cable.termination_b_id) - cable._termination_b_device = termination_b.device + termination_b_device = termination_b.device - cable.save() + Cable.objects.filter(pk=cable.pk).update( + _termination_a_device=termination_a_device, + _termination_b_device=termination_b_device + ) class Migration(migrations.Migration):