perf: account serializer

pull/9019/head
feng 2022-11-04 11:39:34 +08:00
parent 8b05bc4b82
commit 1981bdd3ac
3 changed files with 16 additions and 20 deletions

View File

@ -3,6 +3,7 @@ from rest_framework import serializers
from common.drf.serializers import SecretReadableMixin from common.drf.serializers import SecretReadableMixin
from common.drf.fields import ObjectRelatedField from common.drf.fields import ObjectRelatedField
from assets.tasks import push_accounts_to_assets
from assets.models import Account, AccountTemplate, Asset from assets.models import Account, AccountTemplate, Asset
from .base import BaseAccountSerializer from .base import BaseAccountSerializer
@ -47,8 +48,7 @@ class AccountSerializerCreateMixin(serializers.ModelSerializer):
def create(self, validated_data): def create(self, validated_data):
instance = super().create(validated_data) instance = super().create(validated_data)
if self.push_now: if self.push_now:
# Todo: push it push_accounts_to_assets.delay([instance.id], [instance.asset_id])
print("Start push account to asset")
return instance return instance

View File

@ -1,6 +1,3 @@
from django.utils.translation import ugettext_lazy as _
from rest_framework import serializers
from assets.models import AccountTemplate from assets.models import AccountTemplate
from .base import BaseAccountSerializer from .base import BaseAccountSerializer
@ -9,15 +6,14 @@ class AccountTemplateSerializer(BaseAccountSerializer):
class Meta(BaseAccountSerializer.Meta): class Meta(BaseAccountSerializer.Meta):
model = AccountTemplate model = AccountTemplate
@classmethod # @classmethod
def validate_required(cls, attrs): # def validate_required(cls, attrs):
# Todo: why ? # # TODO 选择模版后检查一些必填项
required_field_dict = {} # required_field_dict = {}
error = _('This field is required.') # error = _('This field is required.')
for k, v in cls().fields.items(): # for k, v in cls().fields.items():
if v.required and k not in attrs: # if v.required and k not in attrs:
required_field_dict[k] = error # required_field_dict[k] = error
if not required_field_dict: # if not required_field_dict:
return # return
raise serializers.ValidationError(required_field_dict) # raise serializers.ValidationError(required_field_dict)

View File

@ -11,8 +11,9 @@ __all__ = [
@org_aware_func("assets") @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 from assets.models import PushAccountAutomation
task_name = gettext_noop("Push accounts to assets")
task_name = PushAccountAutomation.generate_unique_name(task_name) task_name = PushAccountAutomation.generate_unique_name(task_name)
account_usernames = list(accounts.values_list('username', flat=True)) 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) assets = Asset.objects.get(id=asset_ids)
accounts = Account.objects.get(id=account_ids) accounts = Account.objects.get(id=account_ids)
task_name = gettext_noop("Push accounts to assets") return push_accounts_to_assets_util(accounts, assets)
return push_accounts_to_assets_util(accounts, assets, task_name)