Enforce object-level permissions for ObjectConfigContextView

This commit is contained in:
Jeremy Stretch 2020-05-22 11:55:56 -04:00
parent eb9147a575
commit 1bce148be2
3 changed files with 7 additions and 11 deletions

View File

@ -1127,9 +1127,8 @@ class DeviceConfigView(ObjectView):
}) })
class DeviceConfigContextView(PermissionRequiredMixin, ObjectConfigContextView): class DeviceConfigContextView(ObjectConfigContextView):
permission_required = 'dcim.view_device' queryset = Device.objects.all()
object_class = Device
base_template = 'dcim/device.html' base_template = 'dcim/device.html'

View File

@ -154,15 +154,14 @@ class ConfigContextBulkDeleteView(BulkDeleteView):
default_return_url = 'extras:configcontext_list' default_return_url = 'extras:configcontext_list'
class ObjectConfigContextView(View): class ObjectConfigContextView(ObjectView):
object_class = None
base_template = None base_template = None
def get(self, request, pk): def get(self, request, pk):
obj = get_object_or_404(self.object_class, pk=pk) obj = get_object_or_404(self.queryset, pk=pk)
source_contexts = ConfigContext.objects.get_for_object(obj) source_contexts = ConfigContext.objects.get_for_object(obj)
model_name = self.object_class._meta.model_name model_name = self.queryset.model._meta.model_name
# Determine user's preferred output format # Determine user's preferred output format
if request.GET.get('format') in ['json', 'yaml']: if request.GET.get('format') in ['json', 'yaml']:

View File

@ -1,5 +1,4 @@
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.db import transaction from django.db import transaction
from django.db.models import Count from django.db.models import Count
from django.shortcuts import get_object_or_404, redirect, render from django.shortcuts import get_object_or_404, redirect, render
@ -246,9 +245,8 @@ class VirtualMachineView(ObjectView):
}) })
class VirtualMachineConfigContextView(PermissionRequiredMixin, ObjectConfigContextView): class VirtualMachineConfigContextView(ObjectConfigContextView):
permission_required = 'virtualization.view_virtualmachine' queryset = VirtualMachine.objects.all()
object_class = VirtualMachine
base_template = 'virtualization/virtualmachine.html' base_template = 'virtualization/virtualmachine.html'