diff --git a/netbox/circuits/views.py b/netbox/circuits/views.py index 8a8520cb8..8670b8535 100644 --- a/netbox/circuits/views.py +++ b/netbox/circuits/views.py @@ -5,6 +5,7 @@ from django.utils.translation import gettext_lazy as _ from dcim.views import PathTraceView from ipam.models import ASN +from netbox.object_actions import AddObject, BulkDelete, BulkEdit, BulkExport, BulkImport from netbox.views import generic from utilities.forms import ConfirmationForm from utilities.query import count_related @@ -357,6 +358,12 @@ class CircuitBulkEditView(generic.BulkEditView): form = forms.CircuitBulkEditForm +@register_model_view(Circuit, 'bulk_rename', path='rename', detail=False) +class CircuitBulkRenameView(generic.BulkRenameView): + queryset = Circuit.objects.all() + field_name = 'cid' + + @register_model_view(Circuit, 'bulk_delete', path='delete', detail=False) class CircuitBulkDeleteView(generic.BulkDeleteView): queryset = Circuit.objects.prefetch_related( @@ -452,6 +459,7 @@ class CircuitTerminationListView(generic.ObjectListView): filterset = filtersets.CircuitTerminationFilterSet filterset_form = forms.CircuitTerminationFilterForm table = tables.CircuitTerminationTable + actions = (AddObject, BulkImport, BulkExport, BulkEdit, BulkDelete) @register_model_view(CircuitTermination) @@ -568,6 +576,7 @@ class CircuitGroupAssignmentListView(generic.ObjectListView): filterset = filtersets.CircuitGroupAssignmentFilterSet filterset_form = forms.CircuitGroupAssignmentFilterForm table = tables.CircuitGroupAssignmentTable + actions = (AddObject, BulkImport, BulkExport, BulkEdit, BulkDelete) @register_model_view(CircuitGroupAssignment) @@ -727,6 +736,12 @@ class VirtualCircuitBulkEditView(generic.BulkEditView): form = forms.VirtualCircuitBulkEditForm +@register_model_view(VirtualCircuit, 'bulk_rename', path='rename', detail=False) +class VirtualCircuitulkRenameView(generic.BulkRenameView): + queryset = VirtualCircuit.objects.all() + field_name = 'cid' + + class VirtualCircuitBulkDeleteView(generic.BulkDeleteView): queryset = VirtualCircuit.objects.annotate( termination_count=count_related(VirtualCircuitTermination, 'virtual_circuit') @@ -744,6 +759,7 @@ class VirtualCircuitTerminationListView(generic.ObjectListView): filterset = filtersets.VirtualCircuitTerminationFilterSet filterset_form = forms.VirtualCircuitTerminationFilterForm table = tables.VirtualCircuitTerminationTable + actions = (AddObject, BulkImport, BulkExport, BulkEdit, BulkDelete) @register_model_view(VirtualCircuitTermination) diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 63cd5b351..94afc2cb2 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -756,6 +756,12 @@ class RackTypeBulkEditView(generic.BulkEditView): form = forms.RackTypeBulkEditForm +@register_model_view(RackType, 'bulk_rename', path='rename', detail=False) +class RackTypeBulkRenameView(generic.BulkRenameView): + queryset = RackType.objects.all() + field_name = 'model' + + @register_model_view(RackType, 'bulk_delete', path='delete', detail=False) class RackTypeBulkDeleteView(generic.BulkDeleteView): queryset = RackType.objects.all() @@ -957,6 +963,7 @@ class RackReservationListView(generic.ObjectListView): filterset = filtersets.RackReservationFilterSet filterset_form = forms.RackReservationFilterForm table = tables.RackReservationTable + actions = (AddObject, BulkImport, BulkExport, BulkEdit, BulkDelete) @register_model_view(RackReservation) @@ -1325,6 +1332,12 @@ class DeviceTypeBulkEditView(generic.BulkEditView): form = forms.DeviceTypeBulkEditForm +@register_model_view(DeviceType, 'bulk_rename', path='rename', detail=False) +class DeviceTypeBulkRenameView(generic.BulkRenameView): + queryset = DeviceType.objects.all() + field_name = 'model' + + @register_model_view(DeviceType, 'bulk_delete', path='delete', detail=False) class DeviceTypeBulkDeleteView(generic.BulkDeleteView): queryset = DeviceType.objects.annotate( @@ -1596,6 +1609,11 @@ class ModuleTypeBulkEditView(generic.BulkEditView): form = forms.ModuleTypeBulkEditForm +@register_model_view(ModuleType, 'bulk_rename', path='rename', detail=False) +class ModuleTypeBulkRenameView(generic.BulkRenameView): + queryset = ModuleType.objects.all() + + @register_model_view(ModuleType, 'bulk_delete', path='delete', detail=False) class ModuleTypeBulkDeleteView(generic.BulkDeleteView): queryset = ModuleType.objects.annotate( @@ -2448,6 +2466,7 @@ class ModuleListView(generic.ObjectListView): filterset = filtersets.ModuleFilterSet filterset_form = forms.ModuleFilterForm table = tables.ModuleTable + actions = (AddObject, BulkImport, BulkExport, BulkEdit, BulkDelete) @register_model_view(Module) @@ -3593,6 +3612,12 @@ class CableBulkEditView(generic.BulkEditView): form = forms.CableBulkEditForm +@register_model_view(Cable, 'bulk_rename', path='rename', detail=False) +class CableBulkRenameView(generic.BulkRenameView): + queryset = Cable.objects.all() + field_name = 'label' + + @register_model_view(Cable, 'bulk_delete', path='delete', detail=False) class CableBulkDeleteView(generic.BulkDeleteView): queryset = Cable.objects.prefetch_related( @@ -4104,6 +4129,7 @@ class MACAddressListView(generic.ObjectListView): filterset = filtersets.MACAddressFilterSet filterset_form = forms.MACAddressFilterForm table = tables.MACAddressTable + actions = (AddObject, BulkImport, BulkExport, BulkEdit, BulkDelete) @register_model_view(MACAddress) diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 969b0d35d..61a5ce563 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -10,6 +10,7 @@ from dcim.filtersets import InterfaceFilterSet from dcim.forms import InterfaceFilterForm from dcim.models import Device, Interface, Site from ipam.tables import VLANTranslationRuleTable +from netbox.object_actions import AddObject, BulkDelete, BulkEdit, BulkExport, BulkImport from netbox.views import generic from utilities.query import count_related from utilities.tables import get_table_ordering @@ -381,6 +382,7 @@ class AggregateListView(generic.ObjectListView): filterset = filtersets.AggregateFilterSet filterset_form = forms.AggregateFilterForm table = tables.AggregateTable + actions = (AddObject, BulkImport, BulkExport, BulkEdit, BulkDelete) @register_model_view(Aggregate) @@ -536,6 +538,7 @@ class PrefixListView(generic.ObjectListView): filterset_form = forms.PrefixFilterForm table = tables.PrefixTable template_name = 'ipam/prefix_list.html' + actions = (AddObject, BulkImport, BulkExport, BulkEdit, BulkDelete) @register_model_view(Prefix) @@ -818,6 +821,7 @@ class IPAddressListView(generic.ObjectListView): filterset = filtersets.IPAddressFilterSet filterset_form = forms.IPAddressFilterForm table = tables.IPAddressTable + actions = (AddObject, BulkImport, BulkExport, BulkEdit, BulkDelete) @register_model_view(IPAddress) @@ -1157,6 +1161,7 @@ class VLANTranslationRuleListView(generic.ObjectListView): filterset = filtersets.VLANTranslationRuleFilterSet filterset_form = forms.VLANTranslationRuleFilterForm table = tables.VLANTranslationRuleTable + actions = (AddObject, BulkImport, BulkExport, BulkEdit, BulkDelete) @register_model_view(VLANTranslationRule) diff --git a/netbox/users/views.py b/netbox/users/views.py index 9ac9fb786..9071c6c8b 100644 --- a/netbox/users/views.py +++ b/netbox/users/views.py @@ -2,7 +2,7 @@ from django.db.models import Count from core.models import ObjectChange from core.tables import ObjectChangeTable -from netbox.object_actions import AddObject, BulkDelete, BulkEdit, BulkExport, BulkRename +from netbox.object_actions import AddObject, BulkDelete, BulkEdit, BulkExport, BulkImport, BulkRename from netbox.views import generic from utilities.views import register_model_view from . import filtersets, forms, tables @@ -19,6 +19,7 @@ class TokenListView(generic.ObjectListView): filterset = filtersets.TokenFilterSet filterset_form = forms.TokenFilterForm table = tables.TokenTable + actions = (AddObject, BulkImport, BulkExport, BulkEdit, BulkDelete) @register_model_view(Token) @@ -112,6 +113,12 @@ class UserBulkEditView(generic.BulkEditView): form = forms.UserBulkEditForm +@register_model_view(User, 'bulk_rename', path='rename', detail=False) +class UserBulkRenameView(generic.BulkRenameView): + queryset = User.objects.all() + field_name = 'username' + + @register_model_view(User, 'bulk_delete', path='delete', detail=False) class UserBulkDeleteView(generic.BulkDeleteView): queryset = User.objects.all() diff --git a/netbox/vpn/views.py b/netbox/vpn/views.py index 5c81fb205..af9bf1b34 100644 --- a/netbox/vpn/views.py +++ b/netbox/vpn/views.py @@ -1,4 +1,5 @@ from ipam.tables import RouteTargetTable +from netbox.object_actions import AddObject, BulkDelete, BulkEdit, BulkExport, BulkImport from netbox.views import generic from utilities.query import count_related from utilities.views import GetRelatedModelsMixin, register_model_view @@ -548,6 +549,7 @@ class L2VPNTerminationListView(generic.ObjectListView): table = tables.L2VPNTerminationTable filterset = filtersets.L2VPNTerminationFilterSet filterset_form = forms.L2VPNTerminationFilterForm + actions = (AddObject, BulkImport, BulkExport, BulkEdit, BulkDelete) @register_model_view(L2VPNTermination) diff --git a/netbox/wireless/views.py b/netbox/wireless/views.py index ae67c1fc6..cc8f9d995 100644 --- a/netbox/wireless/views.py +++ b/netbox/wireless/views.py @@ -142,6 +142,12 @@ class WirelessLANBulkEditView(generic.BulkEditView): form = forms.WirelessLANBulkEditForm +@register_model_view(WirelessLAN, 'bulk_rename', path='rename', detail=False) +class WirelessLANBulkRenameView(generic.BulkRenameView): + queryset = WirelessLAN.objects.all() + field_name = 'ssid' + + @register_model_view(WirelessLAN, 'bulk_delete', path='delete', detail=False) class WirelessLANBulkDeleteView(generic.BulkDeleteView): queryset = WirelessLAN.objects.all() @@ -192,6 +198,12 @@ class WirelessLinkBulkEditView(generic.BulkEditView): form = forms.WirelessLinkBulkEditForm +@register_model_view(WirelessLink, 'bulk_rename', path='rename', detail=False) +class WirelessLinkBulkRenameView(generic.BulkRenameView): + queryset = WirelessLink.objects.all() + field_name = 'ssid' + + @register_model_view(WirelessLink, 'bulk_delete', path='delete', detail=False) class WirelessLinkBulkDeleteView(generic.BulkDeleteView): queryset = WirelessLink.objects.all()