diff --git a/netbox/circuits/forms/bulk_edit.py b/netbox/circuits/forms/bulk_edit.py index 3ac311c56..2ee5fdbeb 100644 --- a/netbox/circuits/forms/bulk_edit.py +++ b/netbox/circuits/forms/bulk_edit.py @@ -13,6 +13,7 @@ from utilities.forms.widgets import DatePicker, NumberWithOptions __all__ = ( 'CircuitBulkEditForm', + 'CircuitTerminationBulkEditForm', 'CircuitTypeBulkEditForm', 'ProviderBulkEditForm', 'ProviderAccountBulkEditForm', @@ -172,3 +173,17 @@ class CircuitBulkEditForm(NetBoxModelBulkEditForm): nullable_fields = ( 'tenant', 'commit_rate', 'description', 'comments', ) + + +class CircuitTerminationBulkEditForm(NetBoxModelBulkEditForm): + description = forms.CharField( + label=_('Description'), + max_length=200, + required=False + ) + + model = CircuitTermination + fieldsets = ( + FieldSet('description'), + ) + nullable_fields = ('description') diff --git a/netbox/circuits/urls.py b/netbox/circuits/urls.py index 45eaa385e..5c0ab99ee 100644 --- a/netbox/circuits/urls.py +++ b/netbox/circuits/urls.py @@ -50,6 +50,9 @@ urlpatterns = [ # Circuit terminations path('circuit-terminations/', views.CircuitTerminationListView.as_view(), name='circuittermination_list'), path('circuit-terminations/add/', views.CircuitTerminationEditView.as_view(), name='circuittermination_add'), + path('circuit-terminations/import/', views.CircuitTerminationBulkImportView.as_view(), name='circuittermination_import'), + path('circuit-terminations/edit/', views.CircuitTerminationBulkEditView.as_view(), name='circuittermination_bulk_edit'), + path('circuit-terminations/delete/', views.CircuitTerminationBulkDeleteView.as_view(), name='circuittermination_bulk_delete'), path('circuit-terminations//', include(get_model_urls('circuits', 'circuittermination'))), ] diff --git a/netbox/circuits/views.py b/netbox/circuits/views.py index 7caaa3050..02219d660 100644 --- a/netbox/circuits/views.py +++ b/netbox/circuits/views.py @@ -431,5 +431,23 @@ class CircuitTerminationDeleteView(generic.ObjectDeleteView): queryset = CircuitTermination.objects.all() +class CircuitTerminationBulkImportView(generic.BulkImportView): + queryset = CircuitTermination.objects.all() + model_form = forms.CircuitTerminationImportForm + + +class CircuitTerminationBulkEditView(generic.BulkEditView): + queryset = CircuitTermination.objects.all() + filterset = filtersets.CircuitTerminationFilterSet + table = tables.CircuitTerminationTable + form = forms.CircuitTerminationBulkEditForm + + +class CircuitTerminationBulkDeleteView(generic.BulkDeleteView): + queryset = CircuitTermination.objects.all() + filterset = filtersets.CircuitTerminationFilterSet + table = tables.CircuitTerminationTable + + # Trace view register_model_view(CircuitTermination, 'trace', kwargs={'model': CircuitTermination})(PathTraceView) diff --git a/netbox/netbox/navigation/menu.py b/netbox/netbox/navigation/menu.py index e38b3e92e..1e7a9d2cb 100644 --- a/netbox/netbox/navigation/menu.py +++ b/netbox/netbox/navigation/menu.py @@ -258,7 +258,7 @@ CIRCUITS_MENU = Menu( items=( get_model_item('circuits', 'circuit', _('Circuits')), get_model_item('circuits', 'circuittype', _('Circuit Types')), - get_model_item('circuits', 'circuittermination', _('Circuit Terminations'), actions=['add']), + get_model_item('circuits', 'circuittermination', _('Circuit Terminations')), ), ), MenuGroup(