diff --git a/netbox/dcim/migrations/0174_device__console_port_count_and_more.py b/netbox/dcim/migrations/0175_device__console_port_count_and_more.py similarity index 64% rename from netbox/dcim/migrations/0174_device__console_port_count_and_more.py rename to netbox/dcim/migrations/0175_device__console_port_count_and_more.py index 7d48fb3be..5ba073bf5 100644 --- a/netbox/dcim/migrations/0174_device__console_port_count_and_more.py +++ b/netbox/dcim/migrations/0175_device__console_port_count_and_more.py @@ -1,28 +1,12 @@ -# Generated by Django 4.1.8 on 2023-05-16 20:18 +# Generated by Django 4.2.2 on 2023-06-23 19:26 from django.db import migrations import utilities.fields -def populate_device_counts(apps, schema_editor): - Device = apps.get_model('dcim', 'Device') - - for device in Device.objects.all(): - device._console_port_count = device.consoleports.count() - device._console_server_port_count = device.consoleserverports.count() - device._interface_count = device.interfaces.count() - device._front_port_count = device.frontports.count() - device._rear_port_count = device.rearports.count() - device._device_bay_count = device.devicebays.count() - device._inventory_item_count = device.inventoryitems.count() - device._power_port_count = device.powerports.count() - device._power_outlet_count = device.poweroutlets.count() - device.save() - - class Migration(migrations.Migration): dependencies = [ - ('dcim', '0173_remove_napalm_fields'), + ('dcim', '0174_rack_starting_unit'), ] operations = [ @@ -71,8 +55,4 @@ class Migration(migrations.Migration): name='_rear_port_count', field=utilities.fields.CounterCacheField(default=0), ), - migrations.RunPython( - code=populate_device_counts, - reverse_code=migrations.RunPython.noop - ), ] diff --git a/netbox/utilities/counter.py b/netbox/utilities/counter.py index ccba80587..24cba57a9 100644 --- a/netbox/utilities/counter.py +++ b/netbox/utilities/counter.py @@ -35,7 +35,7 @@ class Counter(object): raise TypeError( f"{self.counter_name} should be a CounterCacheField on {self.parent_model}, but is {type(counter_field)}" ) - if not isinstance(parent_model, TrackingModelMixin): + if not isinstance(self.parent_model, TrackingModelMixin): raise TypeError( f"{self.parent_model} should be derived from TrackingModelMixin" ) diff --git a/netbox/utilities/fields.py b/netbox/utilities/fields.py index d1becdf85..e8df8a709 100644 --- a/netbox/utilities/fields.py +++ b/netbox/utilities/fields.py @@ -9,6 +9,7 @@ from .validators import ColorValidator __all__ = ( 'ColorField', + 'CounterCacheField', 'NaturalOrderingField', 'NullableCharField', 'RestrictedGenericForeignKey',