bulk_create.py 4.1 KB

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