Merge pull request #10686 from jumpserver/pr@dev@perf_applet_import

perf: 优化 applet 导入
pull/10697/head
老广 2023-06-13 10:04:02 +08:00 committed by GitHub
commit aee20a6c05
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 9 deletions

View File

@ -9,10 +9,21 @@ logger = get_logger(__name__)
class OrgRoleMixin:
ROOT_ID = '00000000-0000-0000-0000-000000000000'
ROOT_NAME = _('GLOBAL')
DEFAULT_ID = '00000000-0000-0000-0000-000000000002'
DEFAULT_NAME = _('DEFAULT')
SYSTEM_ID = '00000000-0000-0000-0000-000000000004'
SYSTEM_NAME = _('SYSTEM')
members: models.Manager
id: str
def get_members(self):
return self.members.all().distinct()
from users.models import User
if self.id == self.ROOT_ID:
return User.objects.all().exclude(is_service_account=True)
else:
return self.members.all().distinct()
def add_member(self, user, role=None):
from rbac.builtin import BuiltinRole
@ -72,12 +83,6 @@ class Organization(OrgRoleMixin, JMSBaseModel):
'users.User', related_name='orgs', through='rbac.RoleBinding', through_fields=('org', 'user')
)
ROOT_ID = '00000000-0000-0000-0000-000000000000'
ROOT_NAME = _('GLOBAL')
DEFAULT_ID = '00000000-0000-0000-0000-000000000002'
DEFAULT_NAME = _('DEFAULT')
SYSTEM_ID = '00000000-0000-0000-0000-000000000004'
SYSTEM_NAME = _('SYSTEM')
orgs_mapping = None
class Meta:

View File

@ -138,7 +138,7 @@ class Applet(JMSBaseModel):
name = manifest['name']
instance = cls.objects.filter(name=name).first()
serializer = AppletSerializer(instance=instance, data=manifest)
serializer.is_valid()
serializer.is_valid(raise_exception=True)
instance = serializer.save(builtin=builtin)
instance.load_platform_if_need(path)

View File

@ -27,7 +27,8 @@ class AppletPublicationSerializer(serializers.ModelSerializer):
class AppletSerializer(serializers.ModelSerializer):
icon = serializers.ReadOnlyField(label=_("Icon"))
type = LabeledChoiceField(choices=Applet.Type.choices, label=_("Type"))
edition = LabeledChoiceField(choices=Applet.Edition.choices, label=_("Edition"))
edition = LabeledChoiceField(choices=Applet.Edition.choices, label=_("Edition"), required=False,
default=Applet.Edition.community)
class Meta:
model = Applet