1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00
Files
netbox-community-netbox/netbox/netbox/api/routers.py

30 lines
997 B
Python

from rest_framework.routers import DefaultRouter
class NetBoxRouter(DefaultRouter):
"""
Extend DRF's built-in DefaultRouter to:
1. Support bulk operations
2. Alphabetically order endpoints under the root view
"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Update the list view mappings to support bulk operations
self.routes[0].mapping.update({
'put': 'bulk_update',
'patch': 'bulk_partial_update',
'delete': 'bulk_destroy',
})
def get_api_root_view(self, api_urls=None):
"""
Wrap DRF's DefaultRouter to return an alphabetized list of endpoints.
"""
api_root_dict = {}
list_name = self.routes[0].name
for prefix, viewset, basename in sorted(self.registry, key=lambda x: x[0]):
api_root_dict[prefix] = list_name.format(basename=basename)
return self.APIRootView.as_view(api_root_dict=api_root_dict)