Просмотр исходного кода

Enforce object-level permissions for CableTraceView

Jeremy Stretch 5 лет назад
Родитель
Сommit
581dc4e070
1 измененных файлов с 9 добавлено и 3 удалено
  1. 9 3
      netbox/dcim/views.py

+ 9 - 3
netbox/dcim/views.py

@@ -1857,15 +1857,21 @@ class CableView(ObjectView):
         })
 
 
-class CableTraceView(PermissionRequiredMixin, View):
+class CableTraceView(ObjectPermissionRequiredMixin, View):
     """
     Trace a cable path beginning from the given termination.
     """
     permission_required = 'dcim.view_cable'
 
-    def get(self, request, model, pk):
+    def dispatch(self, request, *args, **kwargs):
+        model = kwargs.pop('model')
+        self.queryset = model.objects.all()
+
+        return super().dispatch(request, *args, **kwargs)
+
+    def get(self, request, pk):
 
-        obj = get_object_or_404(model, pk=pk)
+        obj = get_object_or_404(self.queryset, pk=pk)
         path, split_ends = obj.trace()
         total_length = sum(
             [entry[1]._abs_length for entry in path if entry[1] and entry[1]._abs_length]