pref: 优化授权 api 返回字段

pull/9034/head
ibuler 2022-11-09 11:43:55 +08:00
parent d040b4cfe0
commit 71846241ae
2 changed files with 12 additions and 28 deletions

View File

@ -1,17 +1,16 @@
import uuid import uuid
import logging import logging
from functools import reduce
from django.utils import timezone from django.utils import timezone
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.db import models from django.db import models
from django.db.models import F, Q, TextChoices 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 assets.models import Asset, Node, FamilyMixin, Account
from orgs.mixins.models import OrgModelMixin from orgs.mixins.models import OrgModelMixin
from orgs.mixins.models import OrgManager 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 from .const import Action, SpecialAccount
__all__ = [ __all__ = [

View File

@ -6,10 +6,11 @@ from rest_framework.fields import empty
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.db.models import Q 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 assets.models import Asset, Node
from users.models import User, UserGroup from users.models import User, UserGroup
from perms.models import AssetPermission, Action from perms.models import AssetPermission, Action
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
__all__ = ['AssetPermissionSerializer', 'ActionsField'] __all__ = ['AssetPermissionSerializer', 'ActionsField']
@ -44,18 +45,10 @@ class ActionsDisplayField(ActionsField):
class AssetPermissionSerializer(BulkOrgResourceModelSerializer): class AssetPermissionSerializer(BulkOrgResourceModelSerializer):
users_display = serializers.ListField( users = ObjectRelatedField(queryset=User.objects, many=True, required=False)
child=serializers.CharField(), label=_('Users display'), required=False user_groups = ObjectRelatedField(queryset=UserGroup.objects, many=True, required=False)
) assets = ObjectRelatedField(queryset=Asset.objects, many=True, required=False)
user_groups_display = serializers.ListField( nodes = ObjectRelatedField(queryset=Node.objects, many=True, required=False)
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
)
actions = ActionsField(required=False, allow_null=True, label=_("Actions")) actions = ActionsField(required=False, allow_null=True, label=_("Actions"))
is_valid = serializers.BooleanField(read_only=True, label=_("Is valid")) is_valid = serializers.BooleanField(read_only=True, label=_("Is valid"))
is_expired = serializers.BooleanField(read_only=True, label=_('Is expired')) is_expired = serializers.BooleanField(read_only=True, label=_('Is expired'))
@ -64,24 +57,16 @@ class AssetPermissionSerializer(BulkOrgResourceModelSerializer):
model = AssetPermission model = AssetPermission
fields_mini = ['id', 'name'] fields_mini = ['id', 'name']
fields_small = fields_mini + [ fields_small = fields_mini + [
'is_active', 'is_expired', 'is_valid', 'actions', 'accounts', 'is_active', 'is_expired', 'is_valid',
'accounts', 'actions', 'created_by', 'date_created', 'date_expired',
'created_by', 'date_created', 'date_expired',
'date_start', 'comment', 'from_ticket' 'date_start', 'comment', 'from_ticket'
] ]
fields_m2m = [ fields_m2m = [
'users', 'users_display', 'user_groups', 'user_groups_display', 'assets', 'users', 'user_groups', 'assets', 'nodes',
'assets_display', 'nodes', 'nodes_display',
'users_amount', 'user_groups_amount', 'assets_amount',
'nodes_amount',
] ]
fields = fields_small + fields_m2m fields = fields_small + fields_m2m
read_only_fields = ['created_by', 'date_created', 'from_ticket'] read_only_fields = ['created_by', 'date_created', 'from_ticket']
extra_kwargs = { 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')}, 'actions': {'label': _('Actions')},
'is_expired': {'label': _('Is expired')}, 'is_expired': {'label': _('Is expired')},
'is_valid': {'label': _('Is valid')}, 'is_valid': {'label': _('Is valid')},