bulk_create.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. from django import forms
  2. from dcim.models import *
  3. from extras.forms import CustomFieldsMixin
  4. from extras.models import Tag
  5. from utilities.forms import BootstrapMixin, DynamicModelMultipleChoiceField, ExpandableNameField, form_from_model
  6. from .object_create import ComponentCreateForm
  7. __all__ = (
  8. 'ConsolePortBulkCreateForm',
  9. 'ConsoleServerPortBulkCreateForm',
  10. 'DeviceBayBulkCreateForm',
  11. # 'FrontPortBulkCreateForm',
  12. 'InterfaceBulkCreateForm',
  13. 'InventoryItemBulkCreateForm',
  14. 'ModuleBayBulkCreateForm',
  15. 'PowerOutletBulkCreateForm',
  16. 'PowerPortBulkCreateForm',
  17. 'RearPortBulkCreateForm',
  18. )
  19. #
  20. # Device components
  21. #
  22. class DeviceBulkAddComponentForm(BootstrapMixin, CustomFieldsMixin, ComponentCreateForm):
  23. pk = forms.ModelMultipleChoiceField(
  24. queryset=Device.objects.all(),
  25. widget=forms.MultipleHiddenInput()
  26. )
  27. description = forms.CharField(
  28. max_length=100,
  29. required=False
  30. )
  31. tags = DynamicModelMultipleChoiceField(
  32. queryset=Tag.objects.all(),
  33. required=False
  34. )
  35. replication_fields = ('name', 'label')
  36. class ConsolePortBulkCreateForm(
  37. form_from_model(ConsolePort, ['type', 'speed', 'mark_connected']),
  38. DeviceBulkAddComponentForm
  39. ):
  40. model = ConsolePort
  41. field_order = ('name', 'label', 'type', 'mark_connected', 'description', 'tags')
  42. class ConsoleServerPortBulkCreateForm(
  43. form_from_model(ConsoleServerPort, ['type', 'speed', 'mark_connected']),
  44. DeviceBulkAddComponentForm
  45. ):
  46. model = ConsoleServerPort
  47. field_order = ('name', 'label', 'type', 'speed', 'description', 'tags')
  48. class PowerPortBulkCreateForm(
  49. form_from_model(PowerPort, ['type', 'maximum_draw', 'allocated_draw', 'mark_connected']),
  50. DeviceBulkAddComponentForm
  51. ):
  52. model = PowerPort
  53. field_order = ('name', 'label', 'type', 'maximum_draw', 'allocated_draw', 'description', 'tags')
  54. class PowerOutletBulkCreateForm(
  55. form_from_model(PowerOutlet, ['type', 'feed_leg', 'mark_connected']),
  56. DeviceBulkAddComponentForm
  57. ):
  58. model = PowerOutlet
  59. field_order = ('name', 'label', 'type', 'feed_leg', 'description', 'tags')
  60. class InterfaceBulkCreateForm(
  61. form_from_model(Interface, [
  62. 'type', 'enabled', 'speed', 'duplex', 'mtu', 'mgmt_only', 'mark_connected', 'poe_mode', 'poe_type',
  63. ]),
  64. DeviceBulkAddComponentForm
  65. ):
  66. model = Interface
  67. field_order = (
  68. 'name', 'label', 'type', 'enabled', 'speed', 'duplex', 'mtu', 'mgmt_only', 'poe_mode',
  69. 'poe_type', 'mark_connected', 'description', 'tags',
  70. )
  71. # class FrontPortBulkCreateForm(
  72. # form_from_model(FrontPort, ['label', 'type', 'description', 'tags']),
  73. # DeviceBulkAddComponentForm
  74. # ):
  75. # pass
  76. class RearPortBulkCreateForm(
  77. form_from_model(RearPort, ['type', 'color', 'positions', 'mark_connected']),
  78. DeviceBulkAddComponentForm
  79. ):
  80. model = RearPort
  81. field_order = ('name', 'label', 'type', 'positions', 'mark_connected', 'description', 'tags')
  82. class ModuleBayBulkCreateForm(DeviceBulkAddComponentForm):
  83. model = ModuleBay
  84. field_order = ('name', 'label', 'position_pattern', 'description', 'tags')
  85. replication_fields = ('name', 'label', 'position')
  86. position_pattern = ExpandableNameField(
  87. label='Position',
  88. required=False,
  89. help_text='Alphanumeric ranges are supported. (Must match the number of names being created.)'
  90. )
  91. class DeviceBayBulkCreateForm(DeviceBulkAddComponentForm):
  92. model = DeviceBay
  93. field_order = ('name', 'label', 'description', 'tags')
  94. class InventoryItemBulkCreateForm(
  95. form_from_model(InventoryItem, ['role', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'discovered']),
  96. DeviceBulkAddComponentForm
  97. ):
  98. model = InventoryItem
  99. field_order = (
  100. 'name', 'label', 'role', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'discovered',
  101. 'description', 'tags',
  102. )