fix clients not filtering by role in policy overview
This commit is contained in:
parent
f4be199b77
commit
ca8824d1e3
|
@ -7,8 +7,11 @@ from rest_framework.serializers import (
|
|||
from agents.serializers import AgentHostnameSerializer
|
||||
from autotasks.models import TaskResult
|
||||
from checks.models import CheckResult
|
||||
from clients.models import Client
|
||||
from clients.serializers import ClientMinimumSerializer, SiteMinimumSerializer
|
||||
from clients.models import Client, Site
|
||||
from clients.serializers import (
|
||||
ClientMinimumSerializer,
|
||||
SiteMinimumSerializer,
|
||||
)
|
||||
from winupdate.serializers import WinUpdatePolicySerializer
|
||||
|
||||
from .models import Policy
|
||||
|
@ -85,11 +88,29 @@ class PolicyRelatedSerializer(ModelSerializer):
|
|||
)
|
||||
|
||||
|
||||
class PolicyOverviewSiteSerializer(ModelSerializer):
|
||||
workstation_policy = PolicySerializer(read_only=True)
|
||||
server_policy = PolicySerializer(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Site
|
||||
fields = ("pk", "name", "workstation_policy", "server_policy")
|
||||
|
||||
|
||||
class PolicyOverviewSerializer(ModelSerializer):
|
||||
sites = SerializerMethodField()
|
||||
workstation_policy = PolicySerializer(read_only=True)
|
||||
server_policy = PolicySerializer(read_only=True)
|
||||
|
||||
def get_sites(self, obj):
|
||||
return PolicyOverviewSiteSerializer(
|
||||
obj.filtered_sites,
|
||||
many=True,
|
||||
).data
|
||||
|
||||
class Meta:
|
||||
model = Client
|
||||
fields = ("pk", "name", "sites", "workstation_policy", "server_policy")
|
||||
depth = 2
|
||||
|
||||
|
||||
class PolicyCheckStatusSerializer(ModelSerializer):
|
||||
|
|
|
@ -7,10 +7,11 @@ from rest_framework.views import APIView
|
|||
from agents.models import Agent
|
||||
from autotasks.models import TaskResult
|
||||
from checks.models import CheckResult
|
||||
from clients.models import Client
|
||||
from clients.models import Client, Site
|
||||
from tacticalrmm.permissions import _has_perm_on_client, _has_perm_on_site
|
||||
from winupdate.models import WinUpdatePolicy
|
||||
from winupdate.serializers import WinUpdatePolicySerializer
|
||||
from django.db.models import Prefetch
|
||||
|
||||
from .models import Policy
|
||||
from .permissions import AutomationPolicyPerms
|
||||
|
@ -108,8 +109,18 @@ class PolicyCheck(APIView):
|
|||
class OverviewPolicy(APIView):
|
||||
def get(self, request):
|
||||
|
||||
clients = Client.objects.filter_by_role(request.user).select_related(
|
||||
"workstation_policy", "server_policy"
|
||||
clients = (
|
||||
Client.objects.filter_by_role(request.user)
|
||||
.select_related("workstation_policy", "server_policy")
|
||||
.prefetch_related(
|
||||
Prefetch(
|
||||
"sites",
|
||||
queryset=Site.objects.select_related(
|
||||
"workstation_policy", "server_policy"
|
||||
),
|
||||
to_attr="filtered_sites",
|
||||
)
|
||||
)
|
||||
)
|
||||
return Response(PolicyOverviewSerializer(clients, many=True).data)
|
||||
|
||||
|
|
Loading…
Reference in New Issue