mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
* 13745 update migrations to use batch_size * 13745 update migrations to use subquery update * 13745 refactor and update other counter migrations
84 lines
3.3 KiB
Python
84 lines
3.3 KiB
Python
from django.db import migrations
|
|
from django.db.models import Count
|
|
|
|
import utilities.fields
|
|
from utilities.counters import update_counts
|
|
|
|
|
|
def recalculate_device_counts(apps, schema_editor):
|
|
Device = apps.get_model("dcim", "Device")
|
|
|
|
update_counts(Device, 'console_port_count', 'consoleports')
|
|
update_counts(Device, 'console_server_port_count', 'consoleserverports')
|
|
update_counts(Device, 'power_port_count', 'powerports')
|
|
update_counts(Device, 'power_outlet_count', 'poweroutlets')
|
|
update_counts(Device, 'interface_count', 'interfaces')
|
|
update_counts(Device, 'front_port_count', 'frontports')
|
|
update_counts(Device, 'rear_port_count', 'rearports')
|
|
update_counts(Device, 'device_bay_count', 'devicebays')
|
|
update_counts(Device, 'module_bay_count', 'modulebays')
|
|
update_counts(Device, 'inventory_item_count', 'inventoryitems')
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
dependencies = [
|
|
('dcim', '0175_device_oob_ip'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.AddField(
|
|
model_name='device',
|
|
name='console_port_count',
|
|
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.ConsolePort'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='device',
|
|
name='console_server_port_count',
|
|
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.ConsoleServerPort'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='device',
|
|
name='power_port_count',
|
|
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.PowerPort'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='device',
|
|
name='power_outlet_count',
|
|
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.PowerOutlet'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='device',
|
|
name='interface_count',
|
|
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.Interface'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='device',
|
|
name='front_port_count',
|
|
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.FrontPort'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='device',
|
|
name='rear_port_count',
|
|
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.RearPort'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='device',
|
|
name='device_bay_count',
|
|
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.DeviceBay'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='device',
|
|
name='module_bay_count',
|
|
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.ModuleBay'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='device',
|
|
name='inventory_item_count',
|
|
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.InventoryItem'),
|
|
),
|
|
migrations.RunPython(
|
|
recalculate_device_counts,
|
|
reverse_code=migrations.RunPython.noop
|
|
),
|
|
]
|