From 71846241ae8d48ec65fdabde82d59e7e44e333ee Mon Sep 17 00:00:00 2001 From: ibuler Date: Wed, 9 Nov 2022 11:43:55 +0800 Subject: [PATCH] =?UTF-8?q?pref:=20=E4=BC=98=E5=8C=96=E6=8E=88=E6=9D=83=20?= =?UTF-8?q?api=20=E8=BF=94=E5=9B=9E=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/perms/models/asset_permission.py | 7 +++--- apps/perms/serializers/permission.py | 33 ++++++++------------------- 2 files changed, 12 insertions(+), 28 deletions(-) diff --git a/apps/perms/models/asset_permission.py b/apps/perms/models/asset_permission.py index 6e2b6e637..20186527d 100644 --- a/apps/perms/models/asset_permission.py +++ b/apps/perms/models/asset_permission.py @@ -1,17 +1,16 @@ import uuid import logging -from functools import reduce + from django.utils import timezone from django.utils.translation import ugettext_lazy as _ from django.db import models from django.db.models import F, Q, TextChoices -from collections import defaultdict +from common.utils import lazyproperty, date_expired_default +from common.db.models import BaseCreateUpdateModel, UnionQuerySet from assets.models import Asset, Node, FamilyMixin, Account from orgs.mixins.models import OrgModelMixin from orgs.mixins.models import OrgManager -from common.utils import lazyproperty, date_expired_default -from common.db.models import BaseCreateUpdateModel, UnionQuerySet from .const import Action, SpecialAccount __all__ = [ diff --git a/apps/perms/serializers/permission.py b/apps/perms/serializers/permission.py index fd393f990..ff19b9dd6 100644 --- a/apps/perms/serializers/permission.py +++ b/apps/perms/serializers/permission.py @@ -6,10 +6,11 @@ from rest_framework.fields import empty from django.utils.translation import ugettext_lazy as _ from django.db.models import Q +from common.drf.fields import ObjectRelatedField +from orgs.mixins.serializers import BulkOrgResourceModelSerializer from assets.models import Asset, Node from users.models import User, UserGroup from perms.models import AssetPermission, Action -from orgs.mixins.serializers import BulkOrgResourceModelSerializer __all__ = ['AssetPermissionSerializer', 'ActionsField'] @@ -44,18 +45,10 @@ class ActionsDisplayField(ActionsField): class AssetPermissionSerializer(BulkOrgResourceModelSerializer): - users_display = serializers.ListField( - child=serializers.CharField(), label=_('Users display'), required=False - ) - user_groups_display = serializers.ListField( - child=serializers.CharField(), label=_('User groups display'), required=False - ) - assets_display = serializers.ListField( - child=serializers.CharField(), label=_('Assets display'), required=False - ) - nodes_display = serializers.ListField( - child=serializers.CharField(), label=_('Nodes display'), required=False - ) + users = ObjectRelatedField(queryset=User.objects, many=True, required=False) + user_groups = ObjectRelatedField(queryset=UserGroup.objects, many=True, required=False) + assets = ObjectRelatedField(queryset=Asset.objects, many=True, required=False) + nodes = ObjectRelatedField(queryset=Node.objects, many=True, required=False) actions = ActionsField(required=False, allow_null=True, label=_("Actions")) is_valid = serializers.BooleanField(read_only=True, label=_("Is valid")) is_expired = serializers.BooleanField(read_only=True, label=_('Is expired')) @@ -64,24 +57,16 @@ class AssetPermissionSerializer(BulkOrgResourceModelSerializer): model = AssetPermission fields_mini = ['id', 'name'] fields_small = fields_mini + [ - 'is_active', 'is_expired', 'is_valid', 'actions', - 'accounts', - 'created_by', 'date_created', 'date_expired', + 'accounts', 'is_active', 'is_expired', 'is_valid', + 'actions', 'created_by', 'date_created', 'date_expired', 'date_start', 'comment', 'from_ticket' ] fields_m2m = [ - 'users', 'users_display', 'user_groups', 'user_groups_display', 'assets', - 'assets_display', 'nodes', 'nodes_display', - 'users_amount', 'user_groups_amount', 'assets_amount', - 'nodes_amount', + 'users', 'user_groups', 'assets', 'nodes', ] fields = fields_small + fields_m2m read_only_fields = ['created_by', 'date_created', 'from_ticket'] extra_kwargs = { - 'users_amount': {'label': _('Users amount')}, - 'user_groups_amount': {'label': _('User groups amount')}, - 'assets_amount': {'label': _('Assets amount')}, - 'nodes_amount': {'label': _('Nodes amount')}, 'actions': {'label': _('Actions')}, 'is_expired': {'label': _('Is expired')}, 'is_valid': {'label': _('Is valid')},