0176_device_component_counters.py 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. from django.db import migrations
  2. from django.db.models import Count
  3. import utilities.fields
  4. from utilities.counters import update_counts
  5. def recalculate_device_counts(apps, schema_editor):
  6. Device = apps.get_model("dcim", "Device")
  7. update_counts(Device, 'console_port_count', 'consoleports')
  8. update_counts(Device, 'console_server_port_count', 'consoleserverports')
  9. update_counts(Device, 'power_port_count', 'powerports')
  10. update_counts(Device, 'power_outlet_count', 'poweroutlets')
  11. update_counts(Device, 'interface_count', 'interfaces')
  12. update_counts(Device, 'front_port_count', 'frontports')
  13. update_counts(Device, 'rear_port_count', 'rearports')
  14. update_counts(Device, 'device_bay_count', 'devicebays')
  15. update_counts(Device, 'module_bay_count', 'modulebays')
  16. update_counts(Device, 'inventory_item_count', 'inventoryitems')
  17. class Migration(migrations.Migration):
  18. dependencies = [
  19. ('dcim', '0175_device_oob_ip'),
  20. ]
  21. operations = [
  22. migrations.AddField(
  23. model_name='device',
  24. name='console_port_count',
  25. field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.ConsolePort'),
  26. ),
  27. migrations.AddField(
  28. model_name='device',
  29. name='console_server_port_count',
  30. field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.ConsoleServerPort'),
  31. ),
  32. migrations.AddField(
  33. model_name='device',
  34. name='power_port_count',
  35. field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.PowerPort'),
  36. ),
  37. migrations.AddField(
  38. model_name='device',
  39. name='power_outlet_count',
  40. field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.PowerOutlet'),
  41. ),
  42. migrations.AddField(
  43. model_name='device',
  44. name='interface_count',
  45. field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.Interface'),
  46. ),
  47. migrations.AddField(
  48. model_name='device',
  49. name='front_port_count',
  50. field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.FrontPort'),
  51. ),
  52. migrations.AddField(
  53. model_name='device',
  54. name='rear_port_count',
  55. field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.RearPort'),
  56. ),
  57. migrations.AddField(
  58. model_name='device',
  59. name='device_bay_count',
  60. field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.DeviceBay'),
  61. ),
  62. migrations.AddField(
  63. model_name='device',
  64. name='module_bay_count',
  65. field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.ModuleBay'),
  66. ),
  67. migrations.AddField(
  68. model_name='device',
  69. name='inventory_item_count',
  70. field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.InventoryItem'),
  71. ),
  72. migrations.RunPython(
  73. recalculate_device_counts,
  74. reverse_code=migrations.RunPython.noop
  75. ),
  76. ]