From 1981bdd3acb954ab99a2305b5bddb10d43414281 Mon Sep 17 00:00:00 2001 From: feng <1304903146@qq.com> Date: Fri, 4 Nov 2022 11:39:34 +0800 Subject: [PATCH] perf: account serializer --- apps/assets/serializers/account/account.py | 4 ++-- apps/assets/serializers/account/template.py | 26 +++++++++------------ apps/assets/tasks/push_account.py | 6 ++--- 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/apps/assets/serializers/account/account.py b/apps/assets/serializers/account/account.py index b219211c2..efd8d9060 100644 --- a/apps/assets/serializers/account/account.py +++ b/apps/assets/serializers/account/account.py @@ -3,6 +3,7 @@ from rest_framework import serializers from common.drf.serializers import SecretReadableMixin from common.drf.fields import ObjectRelatedField +from assets.tasks import push_accounts_to_assets from assets.models import Account, AccountTemplate, Asset from .base import BaseAccountSerializer @@ -47,8 +48,7 @@ class AccountSerializerCreateMixin(serializers.ModelSerializer): def create(self, validated_data): instance = super().create(validated_data) if self.push_now: - # Todo: push it - print("Start push account to asset") + push_accounts_to_assets.delay([instance.id], [instance.asset_id]) return instance diff --git a/apps/assets/serializers/account/template.py b/apps/assets/serializers/account/template.py index 09c5b4541..4599ca0e7 100644 --- a/apps/assets/serializers/account/template.py +++ b/apps/assets/serializers/account/template.py @@ -1,6 +1,3 @@ -from django.utils.translation import ugettext_lazy as _ -from rest_framework import serializers - from assets.models import AccountTemplate from .base import BaseAccountSerializer @@ -9,15 +6,14 @@ class AccountTemplateSerializer(BaseAccountSerializer): class Meta(BaseAccountSerializer.Meta): model = AccountTemplate - @classmethod - def validate_required(cls, attrs): - # Todo: why ? - required_field_dict = {} - error = _('This field is required.') - for k, v in cls().fields.items(): - if v.required and k not in attrs: - required_field_dict[k] = error - if not required_field_dict: - return - raise serializers.ValidationError(required_field_dict) - + # @classmethod + # def validate_required(cls, attrs): + # # TODO 选择模版后检查一些必填项 + # required_field_dict = {} + # error = _('This field is required.') + # for k, v in cls().fields.items(): + # if v.required and k not in attrs: + # required_field_dict[k] = error + # if not required_field_dict: + # return + # raise serializers.ValidationError(required_field_dict) diff --git a/apps/assets/tasks/push_account.py b/apps/assets/tasks/push_account.py index 19ebd5045..8af71cd3f 100644 --- a/apps/assets/tasks/push_account.py +++ b/apps/assets/tasks/push_account.py @@ -11,8 +11,9 @@ __all__ = [ @org_aware_func("assets") -def push_accounts_to_assets_util(accounts, assets, task_name): +def push_accounts_to_assets_util(accounts, assets): from assets.models import PushAccountAutomation + task_name = gettext_noop("Push accounts to assets") task_name = PushAccountAutomation.generate_unique_name(task_name) account_usernames = list(accounts.values_list('username', flat=True)) @@ -33,5 +34,4 @@ def push_accounts_to_assets(account_ids, asset_ids): assets = Asset.objects.get(id=asset_ids) accounts = Account.objects.get(id=account_ids) - task_name = gettext_noop("Push accounts to assets") - return push_accounts_to_assets_util(accounts, assets, task_name) + return push_accounts_to_assets_util(accounts, assets)