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

1from rest_framework.routers import DefaultRouter 

2 

3 

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) 

12 

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 }) 

19 

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) 

28 

29 return self.APIRootView.as_view(api_root_dict=api_root_dict)