Rename counter fields for accessibility

This commit is contained in:
Jeremy Stretch 2023-07-25 08:16:41 -04:00
parent 09a6257a52
commit 015964115c
5 changed files with 88 additions and 56 deletions

View File

@ -1,46 +1,45 @@
# Generated by Django 4.2.2 on 2023-06-23 19:26
from django.db import migrations from django.db import migrations
import utilities.fields
from django.db.models import Count from django.db.models import Count
import utilities.fields
def recalculate_device_counts(apps, schema_editor): def recalculate_device_counts(apps, schema_editor):
Device = apps.get_model("dcim", "Device") Device = apps.get_model("dcim", "Device")
devices = list(Device.objects.all().annotate( devices = list(Device.objects.all().annotate(
console_port_count=Count('consoleports', distinct=True), _console_port_count=Count('consoleports', distinct=True),
console_server_port_count=Count('consoleserverports', distinct=True), _console_server_port_count=Count('consoleserverports', distinct=True),
interface_count=Count('interfaces', distinct=True), _interface_count=Count('interfaces', distinct=True),
front_port_count=Count('frontports', distinct=True), _front_port_count=Count('frontports', distinct=True),
rear_port_count=Count('rearports', distinct=True), _rear_port_count=Count('rearports', distinct=True),
device_bay_count=Count('devicebays', distinct=True), _device_bay_count=Count('devicebays', distinct=True),
inventory_item_count=Count('inventoryitems', distinct=True), _inventory_item_count=Count('inventoryitems', distinct=True),
power_port_count=Count('powerports', distinct=True), _power_port_count=Count('powerports', distinct=True),
power_outlet_count=Count('poweroutlets', distinct=True), _power_outlet_count=Count('poweroutlets', distinct=True),
)) ))
for device in devices: for device in devices:
device._console_port_count = device.console_port_count device.console_port_count = device._console_port_count
device._console_server_port_count = device.console_server_port_count device.console_server_port_count = device._console_server_port_count
device._interface_count = device.interface_count device.interface_count = device._interface_count
device._front_port_count = device.front_port_count device.front_port_count = device._front_port_count
device._rear_port_count = device.rear_port_count device.rear_port_count = device._rear_port_count
device._device_bay_count = device.device_bay_count device.device_bay_count = device._device_bay_count
device._inventory_item_count = device.inventory_item_count device.inventory_item_count = device._inventory_item_count
device._power_port_count = device.power_port_count device.power_port_count = device._power_port_count
device._power_outlet_count = device.power_outlet_count device.power_outlet_count = device._power_outlet_count
Device.objects.bulk_update( Device.objects.bulk_update(
devices, devices,
['_console_port_count', ['console_port_count',
'_console_server_port_count', 'console_server_port_count',
'_interface_count', 'interface_count',
'_front_port_count', 'front_port_count',
'_rear_port_count', 'rear_port_count',
'_device_bay_count', 'device_bay_count',
'_inventory_item_count', 'inventory_item_count',
'_power_port_count', 'power_port_count',
'_power_outlet_count'], 'power_outlet_count'],
) )
@ -52,47 +51,47 @@ class Migration(migrations.Migration):
operations = [ operations = [
migrations.AddField( migrations.AddField(
model_name='device', model_name='device',
name='_console_port_count', name='console_port_count',
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.ConsolePort'), field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.ConsolePort'),
), ),
migrations.AddField( migrations.AddField(
model_name='device', model_name='device',
name='_console_server_port_count', name='console_server_port_count',
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.ConsoleServerPort'), field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.ConsoleServerPort'),
), ),
migrations.AddField( migrations.AddField(
model_name='device', model_name='device',
name='_device_bay_count', name='device_bay_count',
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.DeviceBay'), field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.DeviceBay'),
), ),
migrations.AddField( migrations.AddField(
model_name='device', model_name='device',
name='_front_port_count', name='front_port_count',
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.FrontPort'), field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.FrontPort'),
), ),
migrations.AddField( migrations.AddField(
model_name='device', model_name='device',
name='_interface_count', name='interface_count',
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.Interface'), field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.Interface'),
), ),
migrations.AddField( migrations.AddField(
model_name='device', model_name='device',
name='_inventory_item_count', name='inventory_item_count',
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.InventoryItem'), field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.InventoryItem'),
), ),
migrations.AddField( migrations.AddField(
model_name='device', model_name='device',
name='_power_outlet_count', name='power_outlet_count',
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.PowerOutlet'), field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.PowerOutlet'),
), ),
migrations.AddField( migrations.AddField(
model_name='device', model_name='device',
name='_power_port_count', name='power_port_count',
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.PowerPort'), field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.PowerPort'),
), ),
migrations.AddField( migrations.AddField(
model_name='device', model_name='device',
name='_rear_port_count', name='rear_port_count',
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.RearPort'), field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.RearPort'),
), ),
migrations.RunPython( migrations.RunPython(

View File

@ -639,15 +639,43 @@ class Device(PrimaryModel, ConfigContextModel):
help_text=_("GPS coordinate in decimal format (xx.yyyyyy)") help_text=_("GPS coordinate in decimal format (xx.yyyyyy)")
) )
_console_port_count = CounterCacheField(to_model='dcim.ConsolePort', to_field='device') # Counter fields
_console_server_port_count = CounterCacheField(to_model='dcim.ConsoleServerPort', to_field='device') console_port_count = CounterCacheField(
_power_port_count = CounterCacheField(to_model='dcim.PowerPort', to_field='device') to_model='dcim.ConsolePort',
_power_outlet_count = CounterCacheField(to_model='dcim.PowerOutlet', to_field='device') to_field='device'
_interface_count = CounterCacheField(to_model='dcim.Interface', to_field='device') )
_front_port_count = CounterCacheField(to_model='dcim.FrontPort', to_field='device') console_server_port_count = CounterCacheField(
_rear_port_count = CounterCacheField(to_model='dcim.RearPort', to_field='device') to_model='dcim.ConsoleServerPort',
_device_bay_count = CounterCacheField(to_model='dcim.DeviceBay', to_field='device') to_field='device'
_inventory_item_count = CounterCacheField(to_model='dcim.InventoryItem', to_field='device') )
power_port_count = CounterCacheField(
to_model='dcim.PowerPort',
to_field='device'
)
power_outlet_count = CounterCacheField(
to_model='dcim.PowerOutlet',
to_field='device'
)
interface_count = CounterCacheField(
to_model='dcim.Interface',
to_field='device'
)
front_port_count = CounterCacheField(
to_model='dcim.FrontPort',
to_field='device'
)
rear_port_count = CounterCacheField(
to_model='dcim.RearPort',
to_field='device'
)
device_bay_count = CounterCacheField(
to_model='dcim.DeviceBay',
to_field='device'
)
inventory_item_count = CounterCacheField(
to_model='dcim.InventoryItem',
to_field='device'
)
# Generic relations # Generic relations
contacts = GenericRelation( contacts = GenericRelation(

View File

@ -174,7 +174,9 @@ class CounterCacheField(models.BigIntegerField):
self.to_model_name = to_model self.to_model_name = to_model
self.to_field_name = to_field self.to_field_name = to_field
kwargs['default'] = kwargs.get('default', 0) kwargs['default'] = kwargs.get('default', 0)
kwargs['editable'] = False
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)

View File

@ -1,19 +1,18 @@
# Generated by Django 4.1.8 on 2023-05-16 21:20
from django.db import migrations from django.db import migrations
import utilities.fields
from django.db.models import Count from django.db.models import Count
import utilities.fields
def populate_virtualmachine_counts(apps, schema_editor): def populate_virtualmachine_counts(apps, schema_editor):
VirtualMachine = apps.get_model('virtualization', 'VirtualMachine') VirtualMachine = apps.get_model('virtualization', 'VirtualMachine')
vms = list(VirtualMachine.objects.annotate(interface_count=Count('interfaces', distinct=True))) vms = list(VirtualMachine.objects.annotate(_interface_count=Count('interfaces', distinct=True)))
for vm in vms: for vm in vms:
vm._interface_count = vm.interface_count vm.interface_count = vm._interface_count
VirtualMachine.objects.bulk_update(vms, ['_interface_count']) VirtualMachine.objects.bulk_update(vms, ['interface_count'])
class Migration(migrations.Migration): class Migration(migrations.Migration):
@ -24,7 +23,7 @@ class Migration(migrations.Migration):
operations = [ operations = [
migrations.AddField( migrations.AddField(
model_name='virtualmachine', model_name='virtualmachine',
name='_interface_count', name='interface_count',
field=utilities.fields.CounterCacheField( field=utilities.fields.CounterCacheField(
default=0, to_field='virtual_machine', to_model='virtualization.VMInterface' default=0, to_field='virtual_machine', to_model='virtualization.VMInterface'
), ),

View File

@ -121,7 +121,11 @@ class VirtualMachine(PrimaryModel, ConfigContextModel):
verbose_name='Disk (GB)' verbose_name='Disk (GB)'
) )
_interface_count = CounterCacheField(to_model='virtualization.VMInterface', to_field='virtual_machine') # Counter fields
interface_count = CounterCacheField(
to_model='virtualization.VMInterface',
to_field='virtual_machine'
)
# Generic relation # Generic relation
contacts = GenericRelation( contacts = GenericRelation(