perf: 改密添加最后汇总信息 (#12595)

Co-authored-by: feng <1304903146@qq.com>
pull/12596/head
fit2bot 2024-01-24 16:20:44 +08:00 committed by GitHub
parent e8bbc44647
commit 8bde45d9dc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 121 additions and 91 deletions

View File

@ -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

View File

@ -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(

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:762a632de4e679462b64cc5baee5e0851fd0e075b63895f2da7ee89de3a11cd3
size 171043
oid sha256:048704af814780b5ac924173460ccc8f7105530c469160093e8516c2ef0ae745
size 171131

View File

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 "利用できないアカウント"

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:77bcfafe99a5e93c5710639e88a0648bce49c666eeb3b4b02185a9f490413bcf
size 140193
oid sha256:29124b882dd0a8fc73bc0c5669c20c3224823df45a8aef580cbecd73339edc30
size 140335

View File

@ -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 <ibuler@qq.com>\n"
"Language-Team: JumpServer team<ibuler@qq.com>\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 "账号无效"