Update VirtualChassis views to support ObjectPermissions

This commit is contained in:
Jeremy Stretch 2020-06-02 15:33:41 -04:00
parent e463430d51
commit 205acd2c4d

View File

@ -3,7 +3,6 @@ import re
from django.conf import settings from django.conf import settings
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.core.paginator import EmptyPage, PageNotAnInteger from django.core.paginator import EmptyPage, PageNotAnInteger
from django.db import transaction from django.db import transaction
@ -12,7 +11,6 @@ from django.forms import modelformset_factory
from django.shortcuts import get_object_or_404, redirect, render from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse from django.urls import reverse
from django.utils.html import escape from django.utils.html import escape
from django.utils.http import is_safe_url
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.views.generic import View from django.views.generic import View
@ -2169,8 +2167,11 @@ class VirtualChassisView(ObjectView):
}) })
class VirtualChassisCreateView(PermissionRequiredMixin, View): class VirtualChassisCreateView(ObjectPermissionRequiredMixin, View):
permission_required = 'dcim.add_virtualchassis' queryset = VirtualChassis.objects.all()
def get_required_permission(self):
return 'dcim.add_virtualchassis'
def post(self, request): def post(self, request):
@ -2224,8 +2225,11 @@ class VirtualChassisCreateView(PermissionRequiredMixin, View):
}) })
class VirtualChassisEditView(PermissionRequiredMixin, GetReturnURLMixin, View): class VirtualChassisEditView(ObjectPermissionRequiredMixin, GetReturnURLMixin, View):
permission_required = 'dcim.change_virtualchassis' queryset = VirtualChassis.objects.all()
def get_required_permission(self):
return 'dcim.change_virtualchassis'
def get(self, request, pk): def get(self, request, pk):
@ -2294,12 +2298,15 @@ class VirtualChassisDeleteView(ObjectDeleteView):
default_return_url = 'dcim:device_list' default_return_url = 'dcim:device_list'
class VirtualChassisAddMemberView(PermissionRequiredMixin, GetReturnURLMixin, View): class VirtualChassisAddMemberView(ObjectPermissionRequiredMixin, GetReturnURLMixin, View):
permission_required = 'dcim.change_virtualchassis' queryset = VirtualChassis.objects.all()
def get_required_permission(self):
return 'dcim.change_virtualchassis'
def get(self, request, pk): def get(self, request, pk):
virtual_chassis = get_object_or_404(VirtualChassis, pk=pk) virtual_chassis = get_object_or_404(self.queryset, pk=pk)
initial_data = {k: request.GET[k] for k in request.GET} initial_data = {k: request.GET[k] for k in request.GET}
member_select_form = forms.VCMemberSelectForm(initial=initial_data) member_select_form = forms.VCMemberSelectForm(initial=initial_data)
@ -2314,7 +2321,7 @@ class VirtualChassisAddMemberView(PermissionRequiredMixin, GetReturnURLMixin, Vi
def post(self, request, pk): def post(self, request, pk):
virtual_chassis = get_object_or_404(VirtualChassis, pk=pk) virtual_chassis = get_object_or_404(self.queryset, pk=pk)
member_select_form = forms.VCMemberSelectForm(request.POST) member_select_form = forms.VCMemberSelectForm(request.POST)
@ -2348,12 +2355,15 @@ class VirtualChassisAddMemberView(PermissionRequiredMixin, GetReturnURLMixin, Vi
}) })
class VirtualChassisRemoveMemberView(PermissionRequiredMixin, GetReturnURLMixin, View): class VirtualChassisRemoveMemberView(ObjectPermissionRequiredMixin, GetReturnURLMixin, View):
permission_required = 'dcim.change_virtualchassis' queryset = Device.objects.all()
def get_required_permission(self):
return 'dcim.change_device'
def get(self, request, pk): def get(self, request, pk):
device = get_object_or_404(Device, pk=pk, virtual_chassis__isnull=False) device = get_object_or_404(self.queryset, pk=pk, virtual_chassis__isnull=False)
form = ConfirmationForm(initial=request.GET) form = ConfirmationForm(initial=request.GET)
return render(request, 'dcim/virtualchassis_remove_member.html', { return render(request, 'dcim/virtualchassis_remove_member.html', {
@ -2364,7 +2374,7 @@ class VirtualChassisRemoveMemberView(PermissionRequiredMixin, GetReturnURLMixin,
def post(self, request, pk): def post(self, request, pk):
device = get_object_or_404(Device, pk=pk, virtual_chassis__isnull=False) device = get_object_or_404(self.queryset, pk=pk, virtual_chassis__isnull=False)
form = ConfirmationForm(request.POST) form = ConfirmationForm(request.POST)
# Protect master device from being removed # Protect master device from being removed