From f8142e23cdc4e6a29a12773c5df4b27904a3f8fc Mon Sep 17 00:00:00 2001 From: xinwen Date: Thu, 28 May 2020 19:08:48 +0800 Subject: [PATCH] =?UTF-8?q?[Fix]=20=E6=9D=83=E9=99=90=E7=AE=A1=E7=90=86->?= =?UTF-8?q?=20=E8=B5=84=E4=BA=A7=E4=B8=8E=E6=95=B0=E6=8D=AE=E5=BA=93=20Bug?= =?UTF-8?q?=20(#4049)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/perms/serializers/asset_permission.py | 6 +-- .../serializers/database_app_permission.py | 53 ++++++++++--------- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/apps/perms/serializers/asset_permission.py b/apps/perms/serializers/asset_permission.py index d60ce28b9..a256a7a3c 100644 --- a/apps/perms/serializers/asset_permission.py +++ b/apps/perms/serializers/asset_permission.py @@ -57,8 +57,8 @@ class AssetPermissionSerializer(BulkOrgResourceModelSerializer): 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'), - assets_amount=Count('assets'), nodes_amount=Count('nodes'), - system_users_amount=Count('system_users') + users_amount=Count('users', distinct=True), user_groups_amount=Count('user_groups', distinct=True), + assets_amount=Count('assets', distinct=True), nodes_amount=Count('nodes', distinct=True), + system_users_amount=Count('system_users', distinct=True) ) return queryset diff --git a/apps/perms/serializers/database_app_permission.py b/apps/perms/serializers/database_app_permission.py index a8813d8a6..0442a6122 100644 --- a/apps/perms/serializers/database_app_permission.py +++ b/apps/perms/serializers/database_app_permission.py @@ -13,30 +13,7 @@ __all__ = [ ] -class DatabaseAppPermissionSerializer(BulkOrgResourceModelSerializer): - class Meta: - model = models.DatabaseAppPermission - list_serializer_class = AdaptedBulkListSerializer - fields = [ - 'id', 'name', 'users', 'user_groups', - 'database_apps', 'system_users', 'comment', 'is_active', - 'date_start', 'date_expired', 'is_valid', - 'created_by', 'date_created' - ] - read_only_fields = ['created_by', 'date_created'] - - -class DatabaseAppPermissionListSerializer(BulkOrgResourceModelSerializer): - is_expired = serializers.BooleanField() - - class Meta: - model = models.DatabaseAppPermission - fields = [ - 'id', 'name', 'comment', 'is_active', 'users_amount', 'user_groups_amount', - 'date_start', 'date_expired', 'is_valid', 'database_apps_amount', 'system_users_amount', - 'created_by', 'date_created', 'is_expired' - ] - +class AmountMixin: @classmethod def setup_eager_loading(cls, queryset): """ Perform necessary eager loading of data. """ @@ -46,3 +23,31 @@ class DatabaseAppPermissionListSerializer(BulkOrgResourceModelSerializer): system_users_amount=Count('system_users', distinct=True) ) return queryset + + +class DatabaseAppPermissionSerializer(AmountMixin, BulkOrgResourceModelSerializer): + class Meta: + model = models.DatabaseAppPermission + list_serializer_class = AdaptedBulkListSerializer + fields = [ + 'id', 'name', 'users', 'user_groups', 'database_apps', 'system_users', + 'comment', 'is_active', 'date_start', 'date_expired', 'is_valid', + 'created_by', 'date_created', 'users_amount', 'user_groups_amount', + 'database_apps_amount', 'system_users_amount', + ] + read_only_fields = [ + 'created_by', 'date_created', 'users_amount', 'user_groups_amount', + 'database_apps_amount', 'system_users_amount', + ] + + +class DatabaseAppPermissionListSerializer(AmountMixin, BulkOrgResourceModelSerializer): + is_expired = serializers.BooleanField() + + class Meta: + model = models.DatabaseAppPermission + fields = [ + 'id', 'name', 'comment', 'is_active', 'users_amount', 'user_groups_amount', + 'date_start', 'date_expired', 'is_valid', 'database_apps_amount', 'system_users_amount', + 'created_by', 'date_created', 'is_expired' + ]