mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-24 17:38:37 -06:00
Add bulk creation view for rear ports
This commit is contained in:
parent
97b8e73716
commit
62cdf0d928
@ -3304,6 +3304,50 @@ class FrontPortCreateForm(BootstrapMixin, forms.Form):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# class FrontPortBulkCreateForm(
|
||||||
|
# form_from_model(FrontPort, ['type', 'description', 'tags']),
|
||||||
|
# DeviceBulkAddComponentForm
|
||||||
|
# ):
|
||||||
|
# tags = TagField(
|
||||||
|
# required=False
|
||||||
|
# )
|
||||||
|
|
||||||
|
|
||||||
|
class FrontPortBulkEditForm(BootstrapMixin, AddRemoveTagsForm, BulkEditForm):
|
||||||
|
pk = forms.ModelMultipleChoiceField(
|
||||||
|
queryset=FrontPort.objects.all(),
|
||||||
|
widget=forms.MultipleHiddenInput()
|
||||||
|
)
|
||||||
|
type = forms.ChoiceField(
|
||||||
|
choices=add_blank_choice(PortTypeChoices),
|
||||||
|
required=False,
|
||||||
|
widget=StaticSelect2()
|
||||||
|
)
|
||||||
|
description = forms.CharField(
|
||||||
|
max_length=100,
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
nullable_fields = [
|
||||||
|
'description',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class FrontPortBulkRenameForm(BulkRenameForm):
|
||||||
|
pk = forms.ModelMultipleChoiceField(
|
||||||
|
queryset=FrontPort.objects.all(),
|
||||||
|
widget=forms.MultipleHiddenInput
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class FrontPortBulkDisconnectForm(ConfirmationForm):
|
||||||
|
pk = forms.ModelMultipleChoiceField(
|
||||||
|
queryset=FrontPort.objects.all(),
|
||||||
|
widget=forms.MultipleHiddenInput
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class FrontPortCSVForm(forms.ModelForm):
|
class FrontPortCSVForm(forms.ModelForm):
|
||||||
device = FlexibleModelChoiceField(
|
device = FlexibleModelChoiceField(
|
||||||
queryset=Device.objects.all(),
|
queryset=Device.objects.all(),
|
||||||
@ -3352,50 +3396,6 @@ class FrontPortCSVForm(forms.ModelForm):
|
|||||||
self.fields['rear_port'].queryset = RearPort.objects.none()
|
self.fields['rear_port'].queryset = RearPort.objects.none()
|
||||||
|
|
||||||
|
|
||||||
# class FrontPortBulkCreateForm(
|
|
||||||
# form_from_model(FrontPort, ['type', 'description', 'tags']),
|
|
||||||
# DeviceBulkAddComponentForm
|
|
||||||
# ):
|
|
||||||
# tags = TagField(
|
|
||||||
# required=False
|
|
||||||
# )
|
|
||||||
|
|
||||||
|
|
||||||
class FrontPortBulkEditForm(BootstrapMixin, AddRemoveTagsForm, BulkEditForm):
|
|
||||||
pk = forms.ModelMultipleChoiceField(
|
|
||||||
queryset=FrontPort.objects.all(),
|
|
||||||
widget=forms.MultipleHiddenInput()
|
|
||||||
)
|
|
||||||
type = forms.ChoiceField(
|
|
||||||
choices=add_blank_choice(PortTypeChoices),
|
|
||||||
required=False,
|
|
||||||
widget=StaticSelect2()
|
|
||||||
)
|
|
||||||
description = forms.CharField(
|
|
||||||
max_length=100,
|
|
||||||
required=False
|
|
||||||
)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
nullable_fields = [
|
|
||||||
'description',
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
class FrontPortBulkRenameForm(BulkRenameForm):
|
|
||||||
pk = forms.ModelMultipleChoiceField(
|
|
||||||
queryset=FrontPort.objects.all(),
|
|
||||||
widget=forms.MultipleHiddenInput
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class FrontPortBulkDisconnectForm(ConfirmationForm):
|
|
||||||
pk = forms.ModelMultipleChoiceField(
|
|
||||||
queryset=FrontPort.objects.all(),
|
|
||||||
widget=forms.MultipleHiddenInput
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Rear pass-through ports
|
# Rear pass-through ports
|
||||||
#
|
#
|
||||||
@ -3448,31 +3448,13 @@ class RearPortCreateForm(BootstrapMixin, forms.Form):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class RearPortCSVForm(forms.ModelForm):
|
class RearPortBulkCreateForm(
|
||||||
device = FlexibleModelChoiceField(
|
form_from_model(RearPort, ['type', 'positions', 'description', 'tags']),
|
||||||
queryset=Device.objects.all(),
|
DeviceBulkAddComponentForm
|
||||||
to_field_name='name',
|
):
|
||||||
help_text='Name or ID of device',
|
tags = TagField(
|
||||||
error_messages={
|
required=False
|
||||||
'invalid_choice': 'Device not found.',
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
type = CSVChoiceField(
|
|
||||||
choices=PortTypeChoices,
|
|
||||||
)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = RearPort
|
|
||||||
fields = RearPort.csv_headers
|
|
||||||
|
|
||||||
|
|
||||||
# class RearPortBulkCreateForm(
|
|
||||||
# form_from_model(RearPort, ['type', 'positions', 'description', 'tags']),
|
|
||||||
# DeviceBulkAddComponentForm
|
|
||||||
# ):
|
|
||||||
# tags = TagField(
|
|
||||||
# required=False
|
|
||||||
# )
|
|
||||||
|
|
||||||
|
|
||||||
class RearPortBulkEditForm(BootstrapMixin, AddRemoveTagsForm, BulkEditForm):
|
class RearPortBulkEditForm(BootstrapMixin, AddRemoveTagsForm, BulkEditForm):
|
||||||
@ -3510,6 +3492,24 @@ class RearPortBulkDisconnectForm(ConfirmationForm):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class RearPortCSVForm(forms.ModelForm):
|
||||||
|
device = FlexibleModelChoiceField(
|
||||||
|
queryset=Device.objects.all(),
|
||||||
|
to_field_name='name',
|
||||||
|
help_text='Name or ID of device',
|
||||||
|
error_messages={
|
||||||
|
'invalid_choice': 'Device not found.',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
type = CSVChoiceField(
|
||||||
|
choices=PortTypeChoices,
|
||||||
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = RearPort
|
||||||
|
fields = RearPort.csv_headers
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Cables
|
# Cables
|
||||||
#
|
#
|
||||||
|
@ -278,7 +278,7 @@ urlpatterns = [
|
|||||||
path('rear-ports/<int:pk>/edit/', views.RearPortEditView.as_view(), name='rearport_edit'),
|
path('rear-ports/<int:pk>/edit/', views.RearPortEditView.as_view(), name='rearport_edit'),
|
||||||
path('rear-ports/<int:pk>/delete/', views.RearPortDeleteView.as_view(), name='rearport_delete'),
|
path('rear-ports/<int:pk>/delete/', views.RearPortDeleteView.as_view(), name='rearport_delete'),
|
||||||
path('rear-ports/<int:pk>/trace/', views.CableTraceView.as_view(), name='rearport_trace', kwargs={'model': RearPort}),
|
path('rear-ports/<int:pk>/trace/', views.CableTraceView.as_view(), name='rearport_trace', kwargs={'model': RearPort}),
|
||||||
# path('devices/rear-ports/add/', views.DeviceBulkAddRearPortView.as_view(), name='device_bulk_add_rearport'),
|
path('devices/rear-ports/add/', views.DeviceBulkAddRearPortView.as_view(), name='device_bulk_add_rearport'),
|
||||||
|
|
||||||
# Device bays
|
# Device bays
|
||||||
path('device-bays/', views.DeviceBayListView.as_view(), name='devicebay_list'),
|
path('device-bays/', views.DeviceBayListView.as_view(), name='devicebay_list'),
|
||||||
|
@ -1986,6 +1986,30 @@ class DeviceBulkAddInterfaceView(PermissionRequiredMixin, BulkComponentCreateVie
|
|||||||
default_return_url = 'dcim:device_list'
|
default_return_url = 'dcim:device_list'
|
||||||
|
|
||||||
|
|
||||||
|
# class DeviceBulkAddFrontPortView(PermissionRequiredMixin, BulkComponentCreateView):
|
||||||
|
# permission_required = 'dcim.add_frontport'
|
||||||
|
# parent_model = Device
|
||||||
|
# parent_field = 'device'
|
||||||
|
# form = forms.FrontPortBulkCreateForm
|
||||||
|
# model = FrontPort
|
||||||
|
# model_form = forms.FrontPortForm
|
||||||
|
# filterset = filters.DeviceFilterSet
|
||||||
|
# table = tables.DeviceTable
|
||||||
|
# default_return_url = 'dcim:device_list'
|
||||||
|
|
||||||
|
|
||||||
|
class DeviceBulkAddRearPortView(PermissionRequiredMixin, BulkComponentCreateView):
|
||||||
|
permission_required = 'dcim.add_rearport'
|
||||||
|
parent_model = Device
|
||||||
|
parent_field = 'device'
|
||||||
|
form = forms.RearPortBulkCreateForm
|
||||||
|
model = RearPort
|
||||||
|
model_form = forms.RearPortForm
|
||||||
|
filterset = filters.DeviceFilterSet
|
||||||
|
table = tables.DeviceTable
|
||||||
|
default_return_url = 'dcim:device_list'
|
||||||
|
|
||||||
|
|
||||||
class DeviceBulkAddDeviceBayView(PermissionRequiredMixin, BulkComponentCreateView):
|
class DeviceBulkAddDeviceBayView(PermissionRequiredMixin, BulkComponentCreateView):
|
||||||
permission_required = 'dcim.add_devicebay'
|
permission_required = 'dcim.add_devicebay'
|
||||||
parent_model = Device
|
parent_model = Device
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
{% if perms.dcim.add_powerport %}<li><a href="{% url 'dcim:device_bulk_add_powerport' %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="formaction">Power Ports</a></li>{% endif %}
|
{% if perms.dcim.add_powerport %}<li><a href="{% url 'dcim:device_bulk_add_powerport' %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="formaction">Power Ports</a></li>{% endif %}
|
||||||
{% if perms.dcim.add_poweroutlet %}<li><a href="{% url 'dcim:device_bulk_add_poweroutlet' %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="formaction">Power Outlets</a></li>{% endif %}
|
{% if perms.dcim.add_poweroutlet %}<li><a href="{% url 'dcim:device_bulk_add_poweroutlet' %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="formaction">Power Outlets</a></li>{% endif %}
|
||||||
{% if perms.dcim.add_interface %}<li><a href="{% url 'dcim:device_bulk_add_interface' %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="formaction">Interfaces</a></li>{% endif %}
|
{% if perms.dcim.add_interface %}<li><a href="{% url 'dcim:device_bulk_add_interface' %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="formaction">Interfaces</a></li>{% endif %}
|
||||||
|
{% if perms.dcim.add_rearport %}<li><a href="{% url 'dcim:device_bulk_add_rearport' %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="formaction">Rear Ports</a></li>{% endif %}
|
||||||
{% if perms.dcim.add_devicebay %}<li><a href="{% url 'dcim:device_bulk_add_devicebay' %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="formaction">Device Bays</a></li>{% endif %}
|
{% if perms.dcim.add_devicebay %}<li><a href="{% url 'dcim:device_bulk_add_devicebay' %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="formaction">Device Bays</a></li>{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user