mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-07-16 16:01:35 +00:00
perf: 账号模版 生成随机密码密钥及账号批量更新500
This commit is contained in:
parent
cbe3d66b39
commit
56a26481a4
@ -37,8 +37,8 @@ class VaultManagerMixin(models.Manager):
|
|||||||
post_save.send(obj.__class__, instance=obj, created=True)
|
post_save.send(obj.__class__, instance=obj, created=True)
|
||||||
return objs
|
return objs
|
||||||
|
|
||||||
def bulk_update(self, objs, batch_size=None, ignore_conflicts=False):
|
def bulk_update(self, objs, fields, batch_size=None):
|
||||||
objs = super().bulk_update(objs, batch_size=batch_size, ignore_conflicts=ignore_conflicts)
|
objs = super().bulk_update(objs, fields, batch_size=batch_size)
|
||||||
for obj in objs:
|
for obj in objs:
|
||||||
post_save.send(obj.__class__, instance=obj, created=False)
|
post_save.send(obj.__class__, instance=obj, created=False)
|
||||||
return objs
|
return objs
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
|
from accounts.const import SecretStrategy, SecretType
|
||||||
from accounts.models import AccountTemplate, Account
|
from accounts.models import AccountTemplate, Account
|
||||||
|
from accounts.utils import SecretGenerator
|
||||||
from common.serializers import SecretReadableMixin
|
from common.serializers import SecretReadableMixin
|
||||||
from common.serializers.fields import ObjectRelatedField
|
from common.serializers.fields import ObjectRelatedField
|
||||||
from .base import BaseAccountSerializer
|
from .base import BaseAccountSerializer
|
||||||
@ -55,9 +57,20 @@ class AccountTemplateSerializer(BaseAccountSerializer):
|
|||||||
accounts = Account.objects.filter(**query_data)
|
accounts = Account.objects.filter(**query_data)
|
||||||
instance.bulk_sync_account_secret(accounts, self.context['request'].user.id)
|
instance.bulk_sync_account_secret(accounts, self.context['request'].user.id)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def generate_secret(attrs):
|
||||||
|
secret_type = attrs.get('secret_type', SecretType.PASSWORD)
|
||||||
|
secret_strategy = attrs.get('secret_strategy', SecretStrategy.custom)
|
||||||
|
password_rules = attrs.get('password_rules')
|
||||||
|
if secret_strategy != SecretStrategy.random:
|
||||||
|
return
|
||||||
|
generator = SecretGenerator(secret_strategy, secret_type, password_rules)
|
||||||
|
attrs['secret'] = generator.get_secret()
|
||||||
|
|
||||||
def validate(self, attrs):
|
def validate(self, attrs):
|
||||||
self._is_sync_account = attrs.pop('is_sync_account', None)
|
self._is_sync_account = attrs.pop('is_sync_account', None)
|
||||||
attrs = super().validate(attrs)
|
attrs = super().validate(attrs)
|
||||||
|
self.generate_secret(attrs)
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
def update(self, instance, validated_data):
|
def update(self, instance, validated_data):
|
||||||
|
Loading…
Reference in New Issue
Block a user