0093_device_component_ordering.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. from django.db import migrations
  2. import utilities.fields
  3. import utilities.ordering
  4. def _update_model_names(model):
  5. # Update each unique field value in bulk
  6. for name in model.objects.values_list('name', flat=True).order_by('name').distinct():
  7. model.objects.filter(name=name).update(_name=utilities.ordering.naturalize(name, max_length=100))
  8. def naturalize_consoleports(apps, schema_editor):
  9. _update_model_names(apps.get_model('dcim', 'ConsolePort'))
  10. def naturalize_consoleserverports(apps, schema_editor):
  11. _update_model_names(apps.get_model('dcim', 'ConsoleServerPort'))
  12. def naturalize_powerports(apps, schema_editor):
  13. _update_model_names(apps.get_model('dcim', 'PowerPort'))
  14. def naturalize_poweroutlets(apps, schema_editor):
  15. _update_model_names(apps.get_model('dcim', 'PowerOutlet'))
  16. def naturalize_frontports(apps, schema_editor):
  17. _update_model_names(apps.get_model('dcim', 'FrontPort'))
  18. def naturalize_rearports(apps, schema_editor):
  19. _update_model_names(apps.get_model('dcim', 'RearPort'))
  20. def naturalize_devicebays(apps, schema_editor):
  21. _update_model_names(apps.get_model('dcim', 'DeviceBay'))
  22. class Migration(migrations.Migration):
  23. dependencies = [
  24. ('dcim', '0092_fix_rack_outer_unit'),
  25. ]
  26. operations = [
  27. migrations.AlterModelOptions(
  28. name='consoleport',
  29. options={'ordering': ('device', '_name')},
  30. ),
  31. migrations.AlterModelOptions(
  32. name='consoleserverport',
  33. options={'ordering': ('device', '_name')},
  34. ),
  35. migrations.AlterModelOptions(
  36. name='devicebay',
  37. options={'ordering': ('device', '_name')},
  38. ),
  39. migrations.AlterModelOptions(
  40. name='frontport',
  41. options={'ordering': ('device', '_name')},
  42. ),
  43. migrations.AlterModelOptions(
  44. name='inventoryitem',
  45. options={'ordering': ('device__id', 'parent__id', '_name')},
  46. ),
  47. migrations.AlterModelOptions(
  48. name='poweroutlet',
  49. options={'ordering': ('device', '_name')},
  50. ),
  51. migrations.AlterModelOptions(
  52. name='powerport',
  53. options={'ordering': ('device', '_name')},
  54. ),
  55. migrations.AlterModelOptions(
  56. name='rearport',
  57. options={'ordering': ('device', '_name')},
  58. ),
  59. migrations.AddField(
  60. model_name='consoleport',
  61. name='_name',
  62. field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize),
  63. ),
  64. migrations.AddField(
  65. model_name='consoleserverport',
  66. name='_name',
  67. field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize),
  68. ),
  69. migrations.AddField(
  70. model_name='devicebay',
  71. name='_name',
  72. field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize),
  73. ),
  74. migrations.AddField(
  75. model_name='frontport',
  76. name='_name',
  77. field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize),
  78. ),
  79. migrations.AddField(
  80. model_name='inventoryitem',
  81. name='_name',
  82. field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize),
  83. ),
  84. migrations.AddField(
  85. model_name='poweroutlet',
  86. name='_name',
  87. field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize),
  88. ),
  89. migrations.AddField(
  90. model_name='powerport',
  91. name='_name',
  92. field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize),
  93. ),
  94. migrations.AddField(
  95. model_name='rearport',
  96. name='_name',
  97. field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize),
  98. ),
  99. migrations.RunPython(
  100. code=naturalize_consoleports,
  101. reverse_code=migrations.RunPython.noop
  102. ),
  103. migrations.RunPython(
  104. code=naturalize_consoleserverports,
  105. reverse_code=migrations.RunPython.noop
  106. ),
  107. migrations.RunPython(
  108. code=naturalize_powerports,
  109. reverse_code=migrations.RunPython.noop
  110. ),
  111. migrations.RunPython(
  112. code=naturalize_poweroutlets,
  113. reverse_code=migrations.RunPython.noop
  114. ),
  115. migrations.RunPython(
  116. code=naturalize_frontports,
  117. reverse_code=migrations.RunPython.noop
  118. ),
  119. migrations.RunPython(
  120. code=naturalize_rearports,
  121. reverse_code=migrations.RunPython.noop
  122. ),
  123. migrations.RunPython(
  124. code=naturalize_devicebays,
  125. reverse_code=migrations.RunPython.noop
  126. ),
  127. ]