bulk_create.py 3.9 KB

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