Coverage for netbox/api/routers.py: 100%
11 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
1from rest_framework.routers import DefaultRouter
4class NetBoxRouter(DefaultRouter):
5 """
6 Extend DRF's built-in DefaultRouter to:
7 1. Support bulk operations
8 2. Alphabetically order endpoints under the root view
9 """
10 def __init__(self, *args, **kwargs):
11 super().__init__(*args, **kwargs)
13 # Update the list view mappings to support bulk operations
14 self.routes[0].mapping.update({
15 'put': 'bulk_update',
16 'patch': 'bulk_partial_update',
17 'delete': 'bulk_destroy',
18 })
20 def get_api_root_view(self, api_urls=None):
21 """
22 Wrap DRF's DefaultRouter to return an alphabetized list of endpoints.
23 """
24 api_root_dict = {}
25 list_name = self.routes[0].name
26 for prefix, viewset, basename in sorted(self.registry, key=lambda x: x[0]):
27 api_root_dict[prefix] = list_name.format(basename=basename)
29 return self.APIRootView.as_view(api_root_dict=api_root_dict)