From cda677a30f6d2087410e3dea91aea589c2cf01e3 Mon Sep 17 00:00:00 2001 From: ibuler Date: Mon, 11 May 2020 12:35:33 +0800 Subject: [PATCH] =?UTF-8?q?[update]=20=E4=BF=AE=E6=94=B9remote=20apps?= =?UTF-8?q?=E7=9A=84serializer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/perms/models/remote_app_permission.py | 10 +++++++++- apps/perms/serializers/asset_permission.py | 1 + apps/perms/serializers/remote_app_permission.py | 12 ++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/apps/perms/models/remote_app_permission.py b/apps/perms/models/remote_app_permission.py index 57a806b80..c9a7e4463 100644 --- a/apps/perms/models/remote_app_permission.py +++ b/apps/perms/models/remote_app_permission.py @@ -1,9 +1,9 @@ # coding: utf-8 # - from django.db import models from django.utils.translation import ugettext_lazy as _ +from common.utils import lazyproperty from .base import BasePermission __all__ = [ @@ -22,3 +22,11 @@ class RemoteAppPermission(BasePermission): def get_all_remote_apps(self): return set(self.remote_apps.all()) + + @lazyproperty + def remote_apps_amount(self): + return self.remote_apps.count() + + @lazyproperty + def system_users_amount(self): + return self.system_users.count() diff --git a/apps/perms/serializers/asset_permission.py b/apps/perms/serializers/asset_permission.py index 8d9235633..d7b72c22a 100644 --- a/apps/perms/serializers/asset_permission.py +++ b/apps/perms/serializers/asset_permission.py @@ -50,6 +50,7 @@ class AssetPermissionSerializer(BulkOrgResourceModelSerializer): 'users_amount', 'user_groups_amount', 'assets_amount', 'nodes_amount', 'system_users_amount', ] fields = small_fields + m2m_fields + read_only_fields = ['created_by', 'date_created'] @classmethod def setup_eager_loading(cls, queryset): diff --git a/apps/perms/serializers/remote_app_permission.py b/apps/perms/serializers/remote_app_permission.py index 9a541d0c0..2c347386c 100644 --- a/apps/perms/serializers/remote_app_permission.py +++ b/apps/perms/serializers/remote_app_permission.py @@ -1,6 +1,7 @@ # coding: utf-8 # from rest_framework import serializers +from django.db.models import Count from common.serializers import AdaptedBulkListSerializer from orgs.mixins.serializers import BulkOrgResourceModelSerializer @@ -25,10 +26,21 @@ class RemoteAppPermissionSerializer(BulkOrgResourceModelSerializer): ] m2m_fields = [ 'users', 'user_groups', 'remote_apps', 'system_users', + 'users_amount', 'user_groups_amount', 'remote_apps_amount', + 'system_users_amount' ] fields = small_fields + m2m_fields read_only_fields = ['created_by', 'date_created'] + @classmethod + def setup_eager_loading(cls, queryset): + """ Perform necessary eager loading of data. """ + queryset = queryset.annotate( + users_amount=Count('users'), user_groups_amount=Count('user_groups'), + remote_apps_amount=Count('remote_apps'), system_users_amount=Count('system_users') + ) + return queryset + class RemoteAppPermissionUpdateUserSerializer(serializers.ModelSerializer): class Meta: