1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Introduce ObjectView to enforce object-level permissions for individual object views

This commit is contained in:
Jeremy Stretch
2020-05-21 15:39:07 -04:00
parent 8fd860a413
commit e61fc1f709
9 changed files with 118 additions and 106 deletions

View File

@@ -1,13 +1,11 @@
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.db.models import Count
from django.shortcuts import get_object_or_404, render
from django.views.generic import View
from circuits.models import Circuit
from dcim.models import Site, Rack, Device, RackReservation
from ipam.models import IPAddress, Prefix, VLAN, VRF
from utilities.views import (
BulkDeleteView, BulkEditView, BulkImportView, ObjectDeleteView, ObjectEditView, ObjectListView,
BulkDeleteView, BulkEditView, BulkImportView, ObjectView, ObjectDeleteView, ObjectEditView, ObjectListView,
)
from virtualization.models import VirtualMachine, Cluster
from . import filters, forms, tables
@@ -59,12 +57,12 @@ class TenantListView(ObjectListView):
table = tables.TenantTable
class TenantView(PermissionRequiredMixin, View):
permission_required = 'tenancy.view_tenant'
class TenantView(ObjectView):
queryset = Tenant.objects.prefetch_related('group')
def get(self, request, slug):
tenant = get_object_or_404(Tenant, slug=slug)
tenant = get_object_or_404(self.queryset, slug=slug)
stats = {
'site_count': Site.objects.filter(tenant=tenant).count(),
'rack_count': Rack.objects.filter(tenant=tenant).count(),