From 3468f8cd40cae492acc8ef033f7c38d4c4dbea8d Mon Sep 17 00:00:00 2001 From: ibuler Date: Wed, 5 Jun 2024 19:33:40 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BF=AE=E6=94=B9=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E7=9A=84=E8=B4=A6=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/i18n/lina/en.json | 2 +- apps/perms/models/asset_permission.py | 16 ++++++++++++++++ apps/perms/serializers/permission.py | 11 ++++++++--- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/apps/i18n/lina/en.json b/apps/i18n/lina/en.json index eb6f92bb2..429a99b44 100644 --- a/apps/i18n/lina/en.json +++ b/apps/i18n/lina/en.json @@ -226,7 +226,7 @@ "ChangeSecretParams": "Change secret parameters", "ChangeViewHelpText": "Click to switch different views", "Chat": "Chat", - "ChatHello": "Hello! Can i help you?", + "ChatHello": "Hello, can I help you?", "ChatAI": "Chat AI", "ChdirHelpText": "By default, the execution directory is the user's home directory", "CheckAssetsAmount": "Check asset quantity", diff --git a/apps/perms/models/asset_permission.py b/apps/perms/models/asset_permission.py index d8c7026e5..07c90ec13 100644 --- a/apps/perms/models/asset_permission.py +++ b/apps/perms/models/asset_permission.py @@ -105,6 +105,22 @@ class AssetPermission(LabeledMixin, JMSOrgBaseModel): return True return False + @property + def real_accounts(self): + return [a for a in self.accounts if not a.startswith('@') or a == '@ALL'] + + @real_accounts.setter + def real_accounts(self, value): + self.accounts += value + + @property + def virtual_accounts(self): + return [a for a in self.accounts if a.startswith('@') and a != '@ALL'] + + @virtual_accounts.setter + def virtual_accounts(self, value): + self.accounts += value + @lazyproperty def users_amount(self): return self.users.count() diff --git a/apps/perms/serializers/permission.py b/apps/perms/serializers/permission.py index 16f5c000b..088cb0c68 100644 --- a/apps/perms/serializers/permission.py +++ b/apps/perms/serializers/permission.py @@ -43,6 +43,8 @@ class AssetPermissionSerializer(ResourceLabelsMixin, BulkOrgResourceModelSeriali is_valid = serializers.BooleanField(read_only=True, label=_("Is valid")) is_expired = serializers.BooleanField(read_only=True, label=_("Is expired")) accounts = serializers.ListField(label=_("Accounts"), required=False) + real_accounts = serializers.ListField(label=_("General accounts"), required=False) + virtual_accounts = serializers.ListField(label=_("Virtual accounts"), required=False) protocols = serializers.ListField(label=_("Protocols"), required=False) template_accounts = AccountTemplate.objects.none() @@ -52,9 +54,9 @@ class AssetPermissionSerializer(ResourceLabelsMixin, BulkOrgResourceModelSeriali fields_mini = ["id", "name"] amount_fields = ["users_amount", "user_groups_amount", "assets_amount", "nodes_amount"] fields_generic = [ - "accounts", "protocols", "actions", "created_by", "date_created", - "date_start", "date_expired", "is_active", "is_expired", - "is_valid", "comment", "from_ticket", + "accounts", "real_accounts", "virtual_accounts", "protocols", "actions", + "created_by", "date_created", "date_start", "date_expired", "is_active", + "is_expired", "is_valid", "comment", "from_ticket", ] fields_small = fields_mini + fields_generic fields_m2m = ["users", "user_groups", "assets", "nodes", "labels"] + amount_fields @@ -135,6 +137,9 @@ class AssetPermissionSerializer(ResourceLabelsMixin, BulkOrgResourceModelSeriali template_usernames = list(self.template_accounts.values_list('username', flat=True)) return list(set(account_usernames + template_usernames)) + def validate_real_accounts(self, usernames): + return self.validate_accounts(usernames) + @classmethod def setup_eager_loading(cls, queryset): """Perform necessary eager loading of data."""