From 8bde45d9dcc36d16b712cec4f46e3929850b1f13 Mon Sep 17 00:00:00 2001 From: fit2bot <68588906+fit2bot@users.noreply.github.com> Date: Wed, 24 Jan 2024 16:20:44 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=94=B9=E5=AF=86=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=9C=80=E5=90=8E=E6=B1=87=E6=80=BB=E4=BF=A1=E6=81=AF=20(#1259?= =?UTF-8?q?5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: feng <1304903146@qq.com> --- .../automations/change_secret/manager.py | 27 +++++-- apps/accounts/notifications.py | 15 ++-- apps/locale/ja/LC_MESSAGES/django.mo | 4 +- apps/locale/ja/LC_MESSAGES/django.po | 81 ++++++++++--------- apps/locale/zh/LC_MESSAGES/django.mo | 4 +- apps/locale/zh/LC_MESSAGES/django.po | 81 ++++++++++--------- 6 files changed, 121 insertions(+), 91 deletions(-) diff --git a/apps/accounts/automations/change_secret/manager.py b/apps/accounts/automations/change_secret/manager.py index 8381419ad..ee6aa436f 100644 --- a/apps/accounts/automations/change_secret/manager.py +++ b/apps/accounts/automations/change_secret/manager.py @@ -4,6 +4,7 @@ from copy import deepcopy from django.conf import settings from django.utils import timezone +from django.utils.translation import gettext_lazy as _ from xlsxwriter import Workbook from accounts.const import AutomationTypes, SecretType, SSHKeyStrategy, SecretStrategy @@ -183,17 +184,33 @@ class ChangeSecretManager(AccountBasePlaybookManager): return False return True + @staticmethod + def get_summary(recorders): + total, succeed, failed = 0, 0, 0 + for recorder in recorders: + if recorder.status == 'success': + succeed += 1 + else: + failed += 1 + total += 1 + + summary = _('Success: %s, Failed: %s, Total: %s') % (succeed, failed, total) + return summary + def run(self, *args, **kwargs): if self.secret_type and not self.check_secret(): return super().run(*args, **kwargs) + recorders = list(self.name_recorder_mapper.values()) + summary = self.get_summary(recorders) + print(summary, end='') + if self.record_id: return - recorders = self.name_recorder_mapper.values() - recorders = list(recorders) - self.send_recorder_mail(recorders) - def send_recorder_mail(self, recorders): + self.send_recorder_mail(recorders, summary) + + def send_recorder_mail(self, recorders, summary): recipients = self.execution.recipients if not recorders or not recipients: return @@ -213,7 +230,7 @@ class ChangeSecretManager(AccountBasePlaybookManager): attachment = os.path.join(path, f'{name}-{local_now_filename()}-{time.time()}.zip') encrypt_and_compress_zip_file(attachment, password, [filename]) attachments = [attachment] - ChangeSecretExecutionTaskMsg(name, user).publish(attachments) + ChangeSecretExecutionTaskMsg(name, user, summary).publish(attachments) os.remove(filename) @staticmethod diff --git a/apps/accounts/notifications.py b/apps/accounts/notifications.py index 404125fd3..30e952b98 100644 --- a/apps/accounts/notifications.py +++ b/apps/accounts/notifications.py @@ -54,20 +54,23 @@ class AccountBackupByObjStorageExecutionTaskMsg(object): class ChangeSecretExecutionTaskMsg(object): subject = _('Notification of implementation result of encryption change plan') - def __init__(self, name: str, user: User): + def __init__(self, name: str, user: User, summary): self.name = name self.user = user + self.summary = summary @property def message(self): name = self.name if self.user.secret_key: - return _('{} - The encryption change task has been completed. ' - 'See the attachment for details').format(name) + default_message = _('{} - The encryption change task has been completed. ' + 'See the attachment for details').format(name) + else: - return _("{} - The encryption change task has been completed: the encryption " - "password has not been set - please go to personal information -> " - "file encryption password to set the encryption password").format(name) + default_message = _("{} - The encryption change task has been completed: the encryption " + "password has not been set - please go to personal information -> " + "file encryption password to set the encryption password").format(name) + return self.summary + '\n' + default_message def publish(self, attachments=None): send_mail_attachment_async( diff --git a/apps/locale/ja/LC_MESSAGES/django.mo b/apps/locale/ja/LC_MESSAGES/django.mo index 5636acce0..a6be67bca 100644 --- a/apps/locale/ja/LC_MESSAGES/django.mo +++ b/apps/locale/ja/LC_MESSAGES/django.mo @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:762a632de4e679462b64cc5baee5e0851fd0e075b63895f2da7ee89de3a11cd3 -size 171043 +oid sha256:048704af814780b5ac924173460ccc8f7105530c469160093e8516c2ef0ae745 +size 171131 diff --git a/apps/locale/ja/LC_MESSAGES/django.po b/apps/locale/ja/LC_MESSAGES/django.po index 48be25a42..ea77eb2ec 100644 --- a/apps/locale/ja/LC_MESSAGES/django.po +++ b/apps/locale/ja/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-18 10:45+0800\n" +"POT-Creation-Date: 2024-01-24 14:55+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,6 +22,11 @@ msgstr "" msgid "The parameter 'action' must be [{}]" msgstr "パラメータ 'action' は [{}] でなければなりません。" +#: accounts/automations/change_secret/manager.py:197 +#, python-format +msgid "Success: %s, Failed: %s, Total: %s" +msgstr "成功: %s、失敗: %s、合計: %s" + #: accounts/const/account.py:6 #: accounts/serializers/automations/change_secret.py:32 #: assets/models/_user.py:24 audits/signal_handlers/login_log.py:34 @@ -360,7 +365,7 @@ msgstr "アカウントバックアップ計画" #: accounts/models/automations/backup_account.py:119 #: assets/models/automations/base.py:115 audits/models.py:65 -#: ops/models/base.py:55 ops/models/celery.py:63 ops/models/job.py:235 +#: ops/models/base.py:55 ops/models/celery.py:86 ops/models/job.py:235 #: ops/templates/ops/celery_task_log.html:75 #: perms/models/asset_permission.py:78 #: settings/templates/ldap/_msg_import_ldap_user.html:5 @@ -471,7 +476,7 @@ msgstr "開始日" #: accounts/models/automations/change_secret.py:42 #: assets/models/automations/base.py:116 ops/models/base.py:56 -#: ops/models/celery.py:64 ops/models/job.py:236 +#: ops/models/celery.py:87 ops/models/job.py:236 #: terminal/models/applet/host.py:142 msgid "Date finished" msgstr "終了日" @@ -604,12 +609,12 @@ msgstr "パスワードルール" #: authentication/serializers/connect_token_secret.py:113 #: authentication/serializers/connect_token_secret.py:168 labels/models.py:11 #: ops/mixin.py:21 ops/models/adhoc.py:20 ops/models/celery.py:15 -#: ops/models/celery.py:57 ops/models/job.py:136 ops/models/playbook.py:28 +#: ops/models/celery.py:80 ops/models/job.py:136 ops/models/playbook.py:28 #: ops/serializers/job.py:18 orgs/models.py:82 #: perms/models/asset_permission.py:61 rbac/models/role.py:29 #: settings/models.py:33 settings/models.py:181 settings/serializers/msg.py:89 #: terminal/models/applet/applet.py:33 terminal/models/component/endpoint.py:12 -#: terminal/models/component/endpoint.py:95 +#: terminal/models/component/endpoint.py:109 #: terminal/models/component/storage.py:26 terminal/models/component/task.py:13 #: terminal/models/component/terminal.py:84 #: terminal/models/virtualapp/provider.py:10 @@ -630,7 +635,7 @@ msgstr "特権アカウント" #: assets/models/label.py:22 #: authentication/serializers/connect_token_secret.py:117 #: terminal/models/applet/applet.py:40 -#: terminal/models/component/endpoint.py:106 +#: terminal/models/component/endpoint.py:120 #: terminal/models/virtualapp/virtualapp.py:23 users/serializers/user.py:167 msgid "Is active" msgstr "アクティブです。" @@ -714,13 +719,13 @@ msgstr "" msgid "Notification of implementation result of encryption change plan" msgstr "暗号化変更プランの実装結果の通知" -#: accounts/notifications.py:65 +#: accounts/notifications.py:66 msgid "" "{} - The encryption change task has been completed. See the attachment for " "details" msgstr "{} -暗号化変更タスクが完了しました。詳細は添付ファイルをご覧ください" -#: accounts/notifications.py:68 +#: accounts/notifications.py:70 msgid "" "{} - The encryption change task has been completed: the encryption password " "has not been set - please go to personal information -> file encryption " @@ -729,7 +734,7 @@ msgstr "" "{} -暗号化変更タスクが完了しました: 暗号化パスワードが設定されていません-個人" "情報にアクセスしてください-> ファイル暗号化パスワードを設定してください" -#: accounts/notifications.py:79 +#: accounts/notifications.py:82 msgid "Gather account change information" msgstr "アカウント変更情報" @@ -778,7 +783,7 @@ msgstr "資産が存在しません" msgid "Has secret" msgstr "エスクローされたパスワード" -#: accounts/serializers/account/account.py:259 ops/models/celery.py:60 +#: accounts/serializers/account/account.py:259 ops/models/celery.py:83 #: tickets/models/comment.py:13 tickets/models/ticket/general.py:45 #: tickets/models/ticket/general.py:279 tickets/serializers/super_ticket.py:14 #: tickets/serializers/ticket/ticket.py:21 @@ -930,7 +935,7 @@ msgstr "关联平台,可以配置推送参数,如果不关联,则使用默 #: settings/models.py:38 terminal/models/applet/applet.py:45 #: terminal/models/applet/applet.py:321 terminal/models/applet/host.py:143 #: terminal/models/component/endpoint.py:25 -#: terminal/models/component/endpoint.py:105 +#: terminal/models/component/endpoint.py:119 #: terminal/models/session/session.py:46 #: terminal/models/virtualapp/virtualapp.py:28 tickets/models/comment.py:32 #: tickets/models/ticket/general.py:297 users/models/user.py:836 @@ -1093,13 +1098,13 @@ msgid "Notifications" msgstr "通知" #: acls/models/base.py:37 assets/models/_user.py:51 -#: assets/models/cmd_filter.py:76 terminal/models/component/endpoint.py:98 +#: assets/models/cmd_filter.py:76 terminal/models/component/endpoint.py:112 #: xpack/plugins/cloud/models.py:282 msgid "Priority" msgstr "優先順位" #: acls/models/base.py:38 assets/models/_user.py:51 -#: assets/models/cmd_filter.py:76 terminal/models/component/endpoint.py:99 +#: assets/models/cmd_filter.py:76 terminal/models/component/endpoint.py:113 #: xpack/plugins/cloud/models.py:283 msgid "1-100, the lower the value will be match first" msgstr "1-100、低い値は最初に一致します" @@ -2734,21 +2739,21 @@ msgstr "認証" msgid "User invalid, disabled or expired" msgstr "ユーザーが無効、無効、または期限切れです" -#: authentication/backends/drf.py:50 +#: authentication/backends/drf.py:52 msgid "Invalid token header. No credentials provided." msgstr "無効なトークンヘッダー。資格情報は提供されていません。" -#: authentication/backends/drf.py:53 +#: authentication/backends/drf.py:55 msgid "Invalid token header. Sign string should not contain spaces." msgstr "無効なトークンヘッダー。記号文字列にはスペースを含めないでください。" -#: authentication/backends/drf.py:59 +#: authentication/backends/drf.py:61 msgid "" "Invalid token header. Sign string should not contain invalid characters." msgstr "" "無効なトークンヘッダー。署名文字列に無効な文字を含めることはできません。" -#: authentication/backends/drf.py:72 +#: authentication/backends/drf.py:74 msgid "Invalid token or cache refreshed." msgstr "無効なトークンまたはキャッシュの更新。" @@ -3077,7 +3082,7 @@ msgid "Please change your password" msgstr "パスワードを変更してください" #: authentication/models/access_key.py:22 -#: terminal/models/component/endpoint.py:96 +#: terminal/models/component/endpoint.py:110 msgid "IP group" msgstr "IP グループ" @@ -3704,7 +3709,7 @@ msgstr "テキストフィールドへのマーシャルデータ" msgid "Encrypt field using Secret Key" msgstr "Secret Keyを使用したフィールドの暗号化" -#: common/db/fields.py:573 +#: common/db/fields.py:580 msgid "" "Invalid JSON data for JSONManyToManyField, should be like {'type': 'all'} or " "{'type': 'ids', 'ids': []} or {'type': 'attrs', 'attrs': [{'name': 'ip', " @@ -3714,15 +3719,15 @@ msgstr "" "{'type':'ids','ids':[]}或 #タイプ:属性、属性:[#名前:ip、照合:正確、" "値:1.1.1.1}" -#: common/db/fields.py:580 +#: common/db/fields.py:587 msgid "Invalid type, should be \"all\", \"ids\" or \"attrs\"" msgstr "無効なタイプです。all、ids、またはattrsでなければなりません" -#: common/db/fields.py:583 +#: common/db/fields.py:590 msgid "Invalid ids for ids, should be a list" msgstr "無効なID、リストでなければなりません" -#: common/db/fields.py:585 common/db/fields.py:590 +#: common/db/fields.py:592 common/db/fields.py:597 #: common/serializers/fields.py:133 tickets/serializers/ticket/common.py:58 #: xpack/plugins/cloud/serializers/account_attrs.py:56 #: xpack/plugins/cloud/serializers/account_attrs.py:79 @@ -3730,11 +3735,11 @@ msgstr "無効なID、リストでなければなりません" msgid "This field is required." msgstr "このフィールドは必須です。" -#: common/db/fields.py:588 common/db/fields.py:593 +#: common/db/fields.py:595 common/db/fields.py:600 msgid "Invalid attrs, should be a list of dict" msgstr "無効な属性、dictリストでなければなりません" -#: common/db/fields.py:595 +#: common/db/fields.py:602 msgid "Invalid attrs, should be has name and value" msgstr "名前と値が必要な無効な属性" @@ -4060,15 +4065,15 @@ msgstr "Ansible 無効" msgid "Skip hosts below:" msgstr "次のホストをスキップします: " -#: ops/api/celery.py:65 ops/api/celery.py:80 +#: ops/api/celery.py:66 ops/api/celery.py:81 msgid "Waiting task start" msgstr "タスク開始待ち" -#: ops/api/celery.py:203 +#: ops/api/celery.py:246 msgid "Task {} not found" msgstr "タスクは存在しません" -#: ops/api/celery.py:208 +#: ops/api/celery.py:251 msgid "Task {} args or kwargs error" msgstr "タスク実行パラメータエラー" @@ -4241,7 +4246,7 @@ msgstr "パターン" msgid "Module" msgstr "モジュール" -#: ops/models/adhoc.py:24 ops/models/celery.py:58 ops/models/job.py:138 +#: ops/models/adhoc.py:24 ops/models/celery.py:81 ops/models/job.py:138 #: terminal/models/component/task.py:14 msgid "Args" msgstr "アルグ" @@ -4273,28 +4278,28 @@ msgstr "概要" msgid "Date last publish" msgstr "発売日" -#: ops/models/celery.py:47 +#: ops/models/celery.py:70 msgid "Celery Task" msgstr "Celery タスク#タスク#" -#: ops/models/celery.py:50 +#: ops/models/celery.py:73 msgid "Can view task monitor" msgstr "タスクモニターを表示できます" -#: ops/models/celery.py:59 terminal/models/component/task.py:15 +#: ops/models/celery.py:82 terminal/models/component/task.py:15 msgid "Kwargs" msgstr "クワーグ" -#: ops/models/celery.py:61 terminal/models/session/sharing.py:128 +#: ops/models/celery.py:84 terminal/models/session/sharing.py:128 #: tickets/const.py:25 msgid "Finished" msgstr "終了" -#: ops/models/celery.py:62 +#: ops/models/celery.py:85 msgid "Date published" msgstr "発売日" -#: ops/models/celery.py:87 +#: ops/models/celery.py:110 msgid "Celery Task Execution" msgstr "Celery タスク実行" @@ -4666,7 +4671,7 @@ msgstr "内部の役割は、破壊することはできません" msgid "The role has been bound to users, can't be destroy" msgstr "ロールはユーザーにバインドされており、破壊することはできません" -#: rbac/api/role.py:100 +#: rbac/api/role.py:102 msgid "Internal role, can't be update" msgstr "内部ロール、更新できません" @@ -6729,14 +6734,14 @@ msgid "SQLServer port" msgstr "SQLServer ポート" #: terminal/models/component/endpoint.py:30 -#: terminal/models/component/endpoint.py:103 +#: terminal/models/component/endpoint.py:117 #: terminal/serializers/endpoint.py:73 terminal/serializers/storage.py:41 #: terminal/serializers/storage.py:53 terminal/serializers/storage.py:83 #: terminal/serializers/storage.py:93 terminal/serializers/storage.py:101 msgid "Endpoint" msgstr "エンドポイント" -#: terminal/models/component/endpoint.py:109 +#: terminal/models/component/endpoint.py:123 msgid "Endpoint rule" msgstr "エンドポイントルール" @@ -8515,7 +8520,7 @@ msgstr "そして" msgid "Or" msgstr "または" -#: xpack/plugins/cloud/manager.py:57 +#: xpack/plugins/cloud/manager.py:56 msgid "Account unavailable" msgstr "利用できないアカウント" diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 0dd3e1e12..fd213b554 100644 --- a/apps/locale/zh/LC_MESSAGES/django.mo +++ b/apps/locale/zh/LC_MESSAGES/django.mo @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:77bcfafe99a5e93c5710639e88a0648bce49c666eeb3b4b02185a9f490413bcf -size 140193 +oid sha256:29124b882dd0a8fc73bc0c5669c20c3224823df45a8aef580cbecd73339edc30 +size 140335 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 8aabf6615..f59eb5fe0 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: JumpServer 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-18 10:44+0800\n" +"POT-Creation-Date: 2024-01-24 14:55+0800\n" "PO-Revision-Date: 2021-05-20 10:54+0800\n" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -21,6 +21,11 @@ msgstr "" msgid "The parameter 'action' must be [{}]" msgstr "参数 'action' 必须是 [{}]" +#: accounts/automations/change_secret/manager.py:197 +#, python-format +msgid "Success: %s, Failed: %s, Total: %s" +msgstr "成功: %s, 失败: %s, 总数: %s" + #: accounts/const/account.py:6 #: accounts/serializers/automations/change_secret.py:32 #: assets/models/_user.py:24 audits/signal_handlers/login_log.py:34 @@ -359,7 +364,7 @@ msgstr "账号备份计划" #: accounts/models/automations/backup_account.py:119 #: assets/models/automations/base.py:115 audits/models.py:65 -#: ops/models/base.py:55 ops/models/celery.py:63 ops/models/job.py:235 +#: ops/models/base.py:55 ops/models/celery.py:86 ops/models/job.py:235 #: ops/templates/ops/celery_task_log.html:75 #: perms/models/asset_permission.py:78 #: settings/templates/ldap/_msg_import_ldap_user.html:5 @@ -470,7 +475,7 @@ msgstr "开始日期" #: accounts/models/automations/change_secret.py:42 #: assets/models/automations/base.py:116 ops/models/base.py:56 -#: ops/models/celery.py:64 ops/models/job.py:236 +#: ops/models/celery.py:87 ops/models/job.py:236 #: terminal/models/applet/host.py:142 msgid "Date finished" msgstr "结束日期" @@ -603,12 +608,12 @@ msgstr "密码规则" #: authentication/serializers/connect_token_secret.py:113 #: authentication/serializers/connect_token_secret.py:168 labels/models.py:11 #: ops/mixin.py:21 ops/models/adhoc.py:20 ops/models/celery.py:15 -#: ops/models/celery.py:57 ops/models/job.py:136 ops/models/playbook.py:28 +#: ops/models/celery.py:80 ops/models/job.py:136 ops/models/playbook.py:28 #: ops/serializers/job.py:18 orgs/models.py:82 #: perms/models/asset_permission.py:61 rbac/models/role.py:29 #: settings/models.py:33 settings/models.py:181 settings/serializers/msg.py:89 #: terminal/models/applet/applet.py:33 terminal/models/component/endpoint.py:12 -#: terminal/models/component/endpoint.py:95 +#: terminal/models/component/endpoint.py:109 #: terminal/models/component/storage.py:26 terminal/models/component/task.py:13 #: terminal/models/component/terminal.py:84 #: terminal/models/virtualapp/provider.py:10 @@ -629,7 +634,7 @@ msgstr "特权账号" #: assets/models/label.py:22 #: authentication/serializers/connect_token_secret.py:117 #: terminal/models/applet/applet.py:40 -#: terminal/models/component/endpoint.py:106 +#: terminal/models/component/endpoint.py:120 #: terminal/models/virtualapp/virtualapp.py:23 users/serializers/user.py:167 msgid "Is active" msgstr "激活" @@ -712,13 +717,13 @@ msgstr "" msgid "Notification of implementation result of encryption change plan" msgstr "改密计划任务结果通知" -#: accounts/notifications.py:65 +#: accounts/notifications.py:66 msgid "" "{} - The encryption change task has been completed. See the attachment for " "details" msgstr "{} - 改密任务已完成, 详情见附件" -#: accounts/notifications.py:68 +#: accounts/notifications.py:70 msgid "" "{} - The encryption change task has been completed: the encryption password " "has not been set - please go to personal information -> file encryption " @@ -727,7 +732,7 @@ msgstr "" "{} - 改密任务已完成: 未设置加密密码 - 请前往个人信息 -> 文件加密密码中设置加" "密密码" -#: accounts/notifications.py:79 +#: accounts/notifications.py:82 msgid "Gather account change information" msgstr "账号变更信息" @@ -776,7 +781,7 @@ msgstr "资产不存在" msgid "Has secret" msgstr "已托管密码" -#: accounts/serializers/account/account.py:259 ops/models/celery.py:60 +#: accounts/serializers/account/account.py:259 ops/models/celery.py:83 #: tickets/models/comment.py:13 tickets/models/ticket/general.py:45 #: tickets/models/ticket/general.py:279 tickets/serializers/super_ticket.py:14 #: tickets/serializers/ticket/ticket.py:21 @@ -928,7 +933,7 @@ msgstr "关联平台,可配置推送参数,如果不关联,将使用默认 #: settings/models.py:38 terminal/models/applet/applet.py:45 #: terminal/models/applet/applet.py:321 terminal/models/applet/host.py:143 #: terminal/models/component/endpoint.py:25 -#: terminal/models/component/endpoint.py:105 +#: terminal/models/component/endpoint.py:119 #: terminal/models/session/session.py:46 #: terminal/models/virtualapp/virtualapp.py:28 tickets/models/comment.py:32 #: tickets/models/ticket/general.py:297 users/models/user.py:836 @@ -1089,13 +1094,13 @@ msgid "Notifications" msgstr "通知" #: acls/models/base.py:37 assets/models/_user.py:51 -#: assets/models/cmd_filter.py:76 terminal/models/component/endpoint.py:98 +#: assets/models/cmd_filter.py:76 terminal/models/component/endpoint.py:112 #: xpack/plugins/cloud/models.py:282 msgid "Priority" msgstr "优先级" #: acls/models/base.py:38 assets/models/_user.py:51 -#: assets/models/cmd_filter.py:76 terminal/models/component/endpoint.py:99 +#: assets/models/cmd_filter.py:76 terminal/models/component/endpoint.py:113 #: xpack/plugins/cloud/models.py:283 msgid "1-100, the lower the value will be match first" msgstr "优先级可选范围为 1-100 (数值越小越优先)" @@ -2713,20 +2718,20 @@ msgstr "认证" msgid "User invalid, disabled or expired" msgstr "用户无效,已禁用或已过期" -#: authentication/backends/drf.py:50 +#: authentication/backends/drf.py:52 msgid "Invalid token header. No credentials provided." msgstr "无效的令牌头。没有提供任何凭据。" -#: authentication/backends/drf.py:53 +#: authentication/backends/drf.py:55 msgid "Invalid token header. Sign string should not contain spaces." msgstr "无效的令牌头。符号字符串不应包含空格。" -#: authentication/backends/drf.py:59 +#: authentication/backends/drf.py:61 msgid "" "Invalid token header. Sign string should not contain invalid characters." msgstr "无效的令牌头。符号字符串不应包含无效字符。" -#: authentication/backends/drf.py:72 +#: authentication/backends/drf.py:74 msgid "Invalid token or cache refreshed." msgstr "刷新的令牌或缓存无效。" @@ -3045,7 +3050,7 @@ msgid "Please change your password" msgstr "请修改密码" #: authentication/models/access_key.py:22 -#: terminal/models/component/endpoint.py:96 +#: terminal/models/component/endpoint.py:110 msgid "IP group" msgstr "IPグループ" @@ -3660,7 +3665,7 @@ msgstr "编码数据为 text" msgid "Encrypt field using Secret Key" msgstr "加密的字段" -#: common/db/fields.py:573 +#: common/db/fields.py:580 msgid "" "Invalid JSON data for JSONManyToManyField, should be like {'type': 'all'} or " "{'type': 'ids', 'ids': []} or {'type': 'attrs', 'attrs': [{'name': 'ip', " @@ -3670,15 +3675,15 @@ msgstr "" "{'type': 'attrs', 'attrs': [{'name': 'ip', 'match': 'exact', 'value': " "'1.1.1.1'}}" -#: common/db/fields.py:580 +#: common/db/fields.py:587 msgid "Invalid type, should be \"all\", \"ids\" or \"attrs\"" msgstr "无效类型,应为 all、ids 或 attrs" -#: common/db/fields.py:583 +#: common/db/fields.py:590 msgid "Invalid ids for ids, should be a list" msgstr "无效的ID,应为列表" -#: common/db/fields.py:585 common/db/fields.py:590 +#: common/db/fields.py:592 common/db/fields.py:597 #: common/serializers/fields.py:133 tickets/serializers/ticket/common.py:58 #: xpack/plugins/cloud/serializers/account_attrs.py:56 #: xpack/plugins/cloud/serializers/account_attrs.py:79 @@ -3686,11 +3691,11 @@ msgstr "无效的ID,应为列表" msgid "This field is required." msgstr "该字段是必填项。" -#: common/db/fields.py:588 common/db/fields.py:593 +#: common/db/fields.py:595 common/db/fields.py:600 msgid "Invalid attrs, should be a list of dict" msgstr "无效的属性,应为dict列表" -#: common/db/fields.py:595 +#: common/db/fields.py:602 msgid "Invalid attrs, should be has name and value" msgstr "无效属性,应具有名称和值" @@ -4011,15 +4016,15 @@ msgstr "Ansible 已禁用" msgid "Skip hosts below:" msgstr "跳过以下主机: " -#: ops/api/celery.py:65 ops/api/celery.py:80 +#: ops/api/celery.py:66 ops/api/celery.py:81 msgid "Waiting task start" msgstr "等待任务开始" -#: ops/api/celery.py:203 +#: ops/api/celery.py:246 msgid "Task {} not found" msgstr "任务 {} 不存在" -#: ops/api/celery.py:208 +#: ops/api/celery.py:251 msgid "Task {} args or kwargs error" msgstr "任务 {} 执行参数错误" @@ -4190,7 +4195,7 @@ msgstr "模式" msgid "Module" msgstr "模块" -#: ops/models/adhoc.py:24 ops/models/celery.py:58 ops/models/job.py:138 +#: ops/models/adhoc.py:24 ops/models/celery.py:81 ops/models/job.py:138 #: terminal/models/component/task.py:14 msgid "Args" msgstr "参数" @@ -4222,28 +4227,28 @@ msgstr "汇总" msgid "Date last publish" msgstr "发布日期" -#: ops/models/celery.py:47 +#: ops/models/celery.py:70 msgid "Celery Task" msgstr "Celery 任务" -#: ops/models/celery.py:50 +#: ops/models/celery.py:73 msgid "Can view task monitor" msgstr "可以查看任务监控" -#: ops/models/celery.py:59 terminal/models/component/task.py:15 +#: ops/models/celery.py:82 terminal/models/component/task.py:15 msgid "Kwargs" msgstr "其它参数" -#: ops/models/celery.py:61 terminal/models/session/sharing.py:128 +#: ops/models/celery.py:84 terminal/models/session/sharing.py:128 #: tickets/const.py:25 msgid "Finished" msgstr "结束" -#: ops/models/celery.py:62 +#: ops/models/celery.py:85 msgid "Date published" msgstr "发布日期" -#: ops/models/celery.py:87 +#: ops/models/celery.py:110 msgid "Celery Task Execution" msgstr "Celery 任务执行" @@ -4614,7 +4619,7 @@ msgstr "内部角色,不能删除" msgid "The role has been bound to users, can't be destroy" msgstr "角色已绑定用户,不能删除" -#: rbac/api/role.py:100 +#: rbac/api/role.py:102 msgid "Internal role, can't be update" msgstr "内部角色,不能更新" @@ -6635,14 +6640,14 @@ msgid "SQLServer port" msgstr "SQLServer 端口" #: terminal/models/component/endpoint.py:30 -#: terminal/models/component/endpoint.py:103 +#: terminal/models/component/endpoint.py:117 #: terminal/serializers/endpoint.py:73 terminal/serializers/storage.py:41 #: terminal/serializers/storage.py:53 terminal/serializers/storage.py:83 #: terminal/serializers/storage.py:93 terminal/serializers/storage.py:101 msgid "Endpoint" msgstr "端点" -#: terminal/models/component/endpoint.py:109 +#: terminal/models/component/endpoint.py:123 msgid "Endpoint rule" msgstr "端点规则" @@ -8391,7 +8396,7 @@ msgstr "与" msgid "Or" msgstr "或" -#: xpack/plugins/cloud/manager.py:57 +#: xpack/plugins/cloud/manager.py:56 msgid "Account unavailable" msgstr "账号无效"