bulk_create.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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 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(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. class ConsolePortBulkCreateForm(
  36. form_from_model(ConsolePort, ['type', 'speed', 'mark_connected']),
  37. DeviceBulkAddComponentForm
  38. ):
  39. model = ConsolePort
  40. field_order = ('name_pattern', 'label_pattern', 'type', 'mark_connected', 'description', 'tags')
  41. class ConsoleServerPortBulkCreateForm(
  42. form_from_model(ConsoleServerPort, ['type', 'speed', 'mark_connected']),
  43. DeviceBulkAddComponentForm
  44. ):
  45. model = ConsoleServerPort
  46. field_order = ('name_pattern', 'label_pattern', 'type', 'speed', 'description', 'tags')
  47. class PowerPortBulkCreateForm(
  48. form_from_model(PowerPort, ['type', 'maximum_draw', 'allocated_draw', 'mark_connected']),
  49. DeviceBulkAddComponentForm
  50. ):
  51. model = PowerPort
  52. field_order = ('name_pattern', 'label_pattern', 'type', 'maximum_draw', 'allocated_draw', 'description', 'tags')
  53. class PowerOutletBulkCreateForm(
  54. form_from_model(PowerOutlet, ['type', 'feed_leg', 'mark_connected']),
  55. DeviceBulkAddComponentForm
  56. ):
  57. model = PowerOutlet
  58. field_order = ('name_pattern', 'label_pattern', 'type', 'feed_leg', 'description', 'tags')
  59. class InterfaceBulkCreateForm(
  60. form_from_model(Interface, ['type', 'enabled', 'speed', 'duplex', 'mtu', 'mgmt_only', 'mark_connected']),
  61. DeviceBulkAddComponentForm
  62. ):
  63. model = Interface
  64. field_order = (
  65. 'name_pattern', 'label_pattern', 'type', 'enabled', 'speed', 'duplex', 'mtu', 'mgmt_only', 'mark_connected', 'description', 'tags',
  66. )
  67. # class FrontPortBulkCreateForm(
  68. # form_from_model(FrontPort, ['label', 'type', 'description', 'tags']),
  69. # DeviceBulkAddComponentForm
  70. # ):
  71. # pass
  72. class RearPortBulkCreateForm(
  73. form_from_model(RearPort, ['type', 'color', 'positions', 'mark_connected']),
  74. DeviceBulkAddComponentForm
  75. ):
  76. model = RearPort
  77. field_order = ('name_pattern', 'label_pattern', 'type', 'positions', 'mark_connected', 'description', 'tags')
  78. class ModuleBayBulkCreateForm(DeviceBulkAddComponentForm):
  79. model = ModuleBay
  80. field_order = ('name_pattern', 'label_pattern', 'position_pattern', 'description', 'tags')
  81. position_pattern = ExpandableNameField(
  82. label='Position',
  83. required=False,
  84. help_text='Alphanumeric ranges are supported. (Must match the number of names being created.)'
  85. )
  86. class DeviceBayBulkCreateForm(DeviceBulkAddComponentForm):
  87. model = DeviceBay
  88. field_order = ('name_pattern', 'label_pattern', 'description', 'tags')
  89. class InventoryItemBulkCreateForm(
  90. form_from_model(InventoryItem, ['role', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'discovered']),
  91. DeviceBulkAddComponentForm
  92. ):
  93. model = InventoryItem
  94. field_order = (
  95. 'name_pattern', 'label_pattern', 'role', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'discovered',
  96. 'description', 'tags',
  97. )