fix: 修复作业中心资产和用于没有过滤授权规则的问题

This commit is contained in:
Aaron3S
2023-02-22 15:35:59 +08:00
parent ee3c548b6b
commit d9a11900a9
3 changed files with 80 additions and 4 deletions

View File

@@ -3,7 +3,7 @@ import uuid
from django.utils.translation import gettext_lazy as _
from rest_framework import serializers
from assets.models import Node
from assets.models import Node, Asset
from perms.utils.user_perm import UserPermAssetUtil
from common.serializers.fields import ReadableHiddenField
from ops.mixin import PeriodTaskSerializerMixin
@@ -17,6 +17,8 @@ class JobSerializer(BulkOrgResourceModelSerializer, PeriodTaskSerializerMixin):
nodes = serializers.ListField(required=False, child=serializers.CharField())
date_last_run = serializers.DateTimeField(label=_('Date last run'), read_only=True)
name = serializers.CharField(label=_('Name'), max_length=128, allow_blank=True, required=False)
assets = serializers.PrimaryKeyRelatedField(label=_('Assets'), queryset=Asset.objects.all(), many=True,
required=False)
def to_internal_value(self, data):
instant = data.get('instant', False)
@@ -30,6 +32,12 @@ class JobSerializer(BulkOrgResourceModelSerializer, PeriodTaskSerializerMixin):
user = request.user if request else None
return user
def validate_assets(self, assets):
permed_assets = UserPermAssetUtil(self.get_request_user()).get_all_assets()
if not set(assets).issubset(set(permed_assets)):
raise serializers.ValidationError(_('Assets not in user perm'))
return assets
def create(self, validated_data):
assets = validated_data.__getitem__('assets')
node_ids = validated_data.pop('nodes', None)