From 900fc4420cb6610b0cdda91176e10d0f2e7e7122 Mon Sep 17 00:00:00 2001 From: feng626 <1304903146@qq.com> Date: Mon, 6 Sep 2021 17:18:07 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=8F=AA=E4=BF=9D=E7=95=99app=20asset?= =?UTF-8?q?=20flow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/locale/zh/LC_MESSAGES/django.mo | Bin 84061 -> 82413 bytes apps/locale/zh/LC_MESSAGES/django.po | 649 +++++++++++------- .../migrations/0010_auto_20210812_1618.py | 6 +- 3 files changed, 391 insertions(+), 264 deletions(-) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 2f75f059b1510611eb835153ad20b31131e4c22c..ba08ece6c1b8c38811758a8e0c61e21aee3d5b09 100644 GIT binary patch delta 24136 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 I1>6t*KOa(f0{{R3 delta 25561 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\n" "Language-Team: JumpServer team\n" @@ -22,10 +22,10 @@ msgstr "" #: assets/models/base.py:175 assets/models/cluster.py:18 #: assets/models/cmd_filter.py:21 assets/models/domain.py:24 #: assets/models/group.py:20 assets/models/label.py:18 ops/mixin.py:24 -#: orgs/models.py:24 perms/models/base.py:49 settings/models.py:29 +#: orgs/models.py:24 perms/models/base.py:44 settings/models.py:29 #: terminal/models/storage.py:23 terminal/models/task.py:16 #: terminal/models/terminal.py:100 users/forms/profile.py:32 -#: users/models/group.py:15 users/models/user.py:561 +#: users/models/group.py:15 users/models/user.py:557 #: users/templates/users/_select_user_modal.html:13 #: users/templates/users/user_asset_permission.html:37 #: users/templates/users/user_asset_permission.html:154 @@ -46,7 +46,7 @@ msgstr "优先级可选范围为 1-100 (数值越小越优先)" #: acls/models/base.py:31 authentication/models.py:20 #: authentication/templates/authentication/_access_key_modal.html:32 -#: perms/models/base.py:52 users/templates/users/_select_user_modal.html:18 +#: perms/models/base.py:48 users/templates/users/_select_user_modal.html:18 msgid "Active" msgstr "激活中" @@ -58,16 +58,16 @@ msgstr "激活中" #: assets/models/cmd_filter.py:23 assets/models/cmd_filter.py:64 #: assets/models/domain.py:25 assets/models/domain.py:65 #: assets/models/group.py:23 assets/models/label.py:23 ops/models/adhoc.py:37 -#: orgs/models.py:27 perms/models/base.py:57 settings/models.py:34 +#: orgs/models.py:27 perms/models/base.py:53 settings/models.py:34 #: terminal/models/storage.py:26 terminal/models/terminal.py:114 -#: tickets/models/ticket.py:73 users/models/group.py:16 -#: users/models/user.py:594 xpack/plugins/change_auth_plan/models.py:88 +#: tickets/models/ticket.py:71 users/models/group.py:16 +#: users/models/user.py:590 xpack/plugins/change_auth_plan/models.py:88 #: xpack/plugins/cloud/models.py:35 xpack/plugins/cloud/models.py:113 #: xpack/plugins/gathered_user/models.py:26 msgid "Comment" msgstr "备注" -#: acls/models/login_acl.py:16 tickets/const.py:19 +#: acls/models/login_acl.py:16 tickets/const.py:38 msgid "Reject" msgstr "拒绝" @@ -83,7 +83,7 @@ msgstr "登录IP" #: acls/serializers/login_acl.py:34 acls/serializers/login_asset_acl.py:75 #: assets/models/cmd_filter.py:57 audits/models.py:57 #: authentication/templates/authentication/_access_key_modal.html:34 -#: tickets/models/ticket.py:43 users/templates/users/_granted_assets.html:29 +#: users/templates/users/_granted_assets.html:29 #: users/templates/users/user_asset_permission.html:44 #: users/templates/users/user_asset_permission.html:79 #: users/templates/users/user_database_app_permission.html:42 @@ -94,12 +94,12 @@ msgstr "动作" #: acls/serializers/login_acl.py:33 assets/models/label.py:15 #: audits/models.py:36 audits/models.py:56 audits/models.py:74 #: audits/serializers.py:93 authentication/models.py:44 -#: authentication/models.py:97 orgs/models.py:19 orgs/models.py:433 -#: perms/models/base.py:50 templates/index.html:78 +#: authentication/models.py:96 orgs/models.py:19 orgs/models.py:433 +#: perms/models/base.py:45 templates/index.html:78 #: terminal/backends/command/models.py:18 #: terminal/backends/command/serializers.py:12 terminal/models/session.py:38 -#: tickets/models/comment.py:17 users/const.py:14 users/models/user.py:176 -#: users/models/user.py:762 users/models/user.py:788 +#: tickets/models/comment.py:17 users/const.py:14 users/models/user.py:175 +#: users/models/user.py:758 users/models/user.py:784 #: users/serializers/group.py:19 #: users/templates/users/user_asset_permission.html:38 #: users/templates/users/user_asset_permission.html:64 @@ -179,7 +179,7 @@ msgstr "格式为逗号分隔的字符串, * 表示匹配所有. " #: applications/serializers/attrs/application_type/vmware_client.py:26 #: assets/models/base.py:176 assets/models/gathered_user.py:15 #: audits/models.py:105 authentication/forms.py:15 authentication/forms.py:17 -#: ops/models/adhoc.py:148 users/forms/profile.py:31 users/models/user.py:559 +#: ops/models/adhoc.py:148 users/forms/profile.py:31 users/models/user.py:555 #: users/templates/users/_select_user_modal.html:14 #: xpack/plugins/change_auth_plan/models.py:51 #: xpack/plugins/change_auth_plan/models.py:311 @@ -221,7 +221,7 @@ msgid "Unsupported protocols: {}" msgstr "不支持的协议: {}" #: acls/serializers/login_asset_acl.py:98 -#: tickets/serializers/ticket/ticket.py:111 +#: tickets/serializers/ticket/ticket.py:105 msgid "The organization `{}` does not exist" msgstr "组织 `{}` 不存在" @@ -264,7 +264,7 @@ msgstr "类别" #: assets/models/user.py:202 perms/models/application_permission.py:23 #: perms/serializers/application/user_permission.py:34 #: terminal/models/storage.py:55 terminal/models/storage.py:116 -#: tickets/models/ticket.py:38 +#: tickets/models/flow.py:50 tickets/models/ticket.py:48 #: tickets/serializers/ticket/meta/ticket_type/apply_application.py:27 msgid "Type" msgstr "类型" @@ -280,7 +280,7 @@ msgstr "" #: applications/serializers/application.py:50 #: applications/serializers/application.py:81 assets/serializers/label.py:13 -#: perms/serializers/application/permission.py:16 +#: perms/serializers/application/permission.py:18 #: tickets/serializers/ticket/meta/ticket_type/apply_application.py:24 msgid "Category display" msgstr "类别名称" @@ -288,9 +288,10 @@ msgstr "类别名称" #: applications/serializers/application.py:51 #: applications/serializers/application.py:83 #: assets/serializers/system_user.py:26 audits/serializers.py:29 -#: perms/serializers/application/permission.py:17 +#: perms/serializers/application/permission.py:19 #: tickets/serializers/ticket/meta/ticket_type/apply_application.py:31 -#: tickets/serializers/ticket/ticket.py:19 +#: tickets/serializers/ticket/ticket.py:22 +#: tickets/serializers/ticket/ticket.py:162 msgid "Type display" msgstr "类型名称" @@ -334,6 +335,7 @@ msgid "System user" msgstr "系统用户" #: applications/serializers/application.py:77 assets/serializers/account.py:31 +#: assets/serializers/account.py:52 msgid "System user display" msgstr "系统用户名称" @@ -349,13 +351,13 @@ msgstr "应用名称" msgid "Union id" msgstr "联合ID" -#: applications/serializers/application.py:85 orgs/mixins/models.py:45 +#: applications/serializers/application.py:85 orgs/mixins/models.py:46 #: orgs/mixins/serializers.py:25 orgs/models.py:37 orgs/models.py:432 -#: orgs/serializers.py:106 tickets/serializers/ticket/ticket.py:83 +#: orgs/serializers.py:106 tickets/serializers/ticket/ticket.py:77 msgid "Organization" msgstr "组织" -#: applications/serializers/application.py:86 assets/serializers/asset.py:97 +#: applications/serializers/application.py:86 assets/serializers/asset.py:98 #: assets/serializers/system_user.py:217 orgs/mixins/serializers.py:26 msgid "Org name" msgstr "组织名称" @@ -388,7 +390,6 @@ msgid "Application path" msgstr "应用路径" #: applications/serializers/attrs/application_category/remote_app.py:45 -#: xpack/plugins/cloud/serializers.py:51 msgid "This field is required." msgstr "该字段是必填项。" @@ -429,8 +430,8 @@ msgstr "基础" msgid "Charset" msgstr "编码" -#: assets/models/asset.py:142 assets/serializers/asset.py:161 -#: tickets/models/ticket.py:40 +#: assets/models/asset.py:142 assets/serializers/asset.py:168 +#: tickets/models/ticket.py:50 msgid "Meta" msgstr "元数据" @@ -539,7 +540,7 @@ msgstr "标签管理" #: assets/models/cluster.py:28 assets/models/cmd_filter.py:26 #: assets/models/cmd_filter.py:67 assets/models/group.py:21 #: common/db/models.py:70 common/mixins/models.py:49 orgs/models.py:25 -#: orgs/models.py:437 perms/models/base.py:55 users/models/user.py:602 +#: orgs/models.py:437 perms/models/base.py:51 users/models/user.py:598 #: users/serializers/group.py:33 xpack/plugins/change_auth_plan/models.py:92 #: xpack/plugins/cloud/models.py:119 xpack/plugins/gathered_user/models.py:30 msgid "Created by" @@ -552,8 +553,8 @@ msgstr "创建者" #: assets/models/gathered_user.py:19 assets/models/group.py:22 #: assets/models/label.py:25 common/db/models.py:72 common/mixins/models.py:50 #: ops/models/adhoc.py:38 ops/models/command.py:29 orgs/models.py:26 -#: orgs/models.py:435 perms/models/base.py:56 users/models/group.py:18 -#: users/models/user.py:789 xpack/plugins/cloud/models.py:122 +#: orgs/models.py:435 perms/models/base.py:52 users/models/group.py:18 +#: users/models/user.py:785 xpack/plugins/cloud/models.py:122 msgid "Date created" msgstr "创建日期" @@ -612,7 +613,7 @@ msgstr "带宽" msgid "Contact" msgstr "联系人" -#: assets/models/cluster.py:22 users/models/user.py:580 +#: assets/models/cluster.py:22 users/models/user.py:576 msgid "Phone" msgstr "手机" @@ -638,7 +639,7 @@ msgid "Default" msgstr "默认" #: assets/models/cluster.py:36 assets/models/label.py:14 -#: users/models/user.py:774 +#: users/models/user.py:770 msgid "System" msgstr "系统" @@ -806,7 +807,7 @@ msgstr "认证方式" msgid "SFTP Root" msgstr "SFTP根路径" -#: assets/models/user.py:211 authentication/models.py:95 +#: assets/models/user.py:211 authentication/models.py:94 msgid "Token" msgstr "" @@ -839,11 +840,11 @@ msgstr "网域名称" msgid "Nodes name" msgstr "节点名称" -#: assets/serializers/asset.py:96 +#: assets/serializers/asset.py:97 msgid "Hardware info" msgstr "硬件信息" -#: assets/serializers/asset.py:98 +#: assets/serializers/asset.py:99 msgid "Admin user display" msgstr "特权用户名称" @@ -853,12 +854,12 @@ msgstr "密钥不合法" #: assets/serializers/domain.py:12 assets/serializers/label.py:12 #: assets/serializers/system_user.py:52 -#: perms/serializers/asset/permission.py:72 +#: perms/serializers/asset/permission.py:74 msgid "Assets amount" msgstr "资产数量" #: assets/serializers/domain.py:13 -#: perms/serializers/application/permission.py:43 +#: perms/serializers/application/permission.py:45 msgid "Applications amount" msgstr "应用数量" @@ -883,7 +884,7 @@ msgid "SSH key fingerprint" msgstr "密钥指纹" #: assets/serializers/system_user.py:51 -#: perms/serializers/asset/permission.py:73 +#: perms/serializers/asset/permission.py:75 msgid "Nodes amount" msgstr "节点数量" @@ -1085,12 +1086,10 @@ msgstr "文件名" msgid "Success" msgstr "成功" -#: audits/models.py:43 ops/models/command.py:30 perms/models/base.py:53 +#: audits/models.py:43 ops/models/command.py:30 perms/models/base.py:49 #: terminal/models/session.py:52 -#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:43 -#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:74 -#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:40 -#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:78 +#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:53 +#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:45 #: xpack/plugins/change_auth_plan/models.py:194 #: xpack/plugins/change_auth_plan/models.py:340 #: xpack/plugins/gathered_user/models.py:76 @@ -1158,7 +1157,7 @@ msgstr "用户代理" #: audits/models.py:110 #: authentication/templates/authentication/_mfa_confirm_modal.html:14 #: authentication/templates/authentication/login_otp.html:6 -#: users/forms/profile.py:64 users/models/user.py:583 +#: users/forms/profile.py:64 users/models/user.py:579 #: users/serializers/profile.py:102 msgid "MFA" msgstr "多因子认证" @@ -1168,7 +1167,7 @@ msgstr "多因子认证" msgid "Reason" msgstr "原因" -#: audits/models.py:112 tickets/models/ticket.py:47 +#: audits/models.py:112 tickets/models/ticket.py:57 #: xpack/plugins/cloud/models.py:172 xpack/plugins/cloud/models.py:221 msgid "Status" msgstr "状态" @@ -1185,7 +1184,7 @@ msgstr "认证方式" msgid "Operate display" msgstr "操作名称" -#: audits/serializers.py:30 tickets/serializers/ticket/ticket.py:24 +#: audits/serializers.py:30 tickets/serializers/ticket/ticket.py:23 msgid "Status display" msgstr "状态名称" @@ -1627,7 +1626,7 @@ msgstr "请修改密码" msgid "Private Token" msgstr "SSH密钥" -#: authentication/models.py:96 +#: authentication/models.py:95 msgid "Expired" msgstr "过期时间" @@ -1662,14 +1661,14 @@ msgid "Show" msgstr "显示" #: authentication/templates/authentication/_access_key_modal.html:66 -#: settings/serializers/settings.py:149 users/models/user.py:468 +#: settings/serializers/settings.py:149 users/models/user.py:464 #: users/serializers/profile.py:99 #: users/templates/users/user_verify_mfa.html:32 msgid "Disable" msgstr "禁用" #: authentication/templates/authentication/_access_key_modal.html:67 -#: users/models/user.py:469 users/serializers/profile.py:100 +#: users/models/user.py:465 users/serializers/profile.py:100 msgid "Enable" msgstr "启用" @@ -1679,7 +1678,7 @@ msgstr "删除成功" #: authentication/templates/authentication/_access_key_modal.html:155 #: authentication/templates/authentication/_mfa_confirm_modal.html:53 -#: templates/_modal.html:22 tickets/const.py:20 +#: templates/_modal.html:22 tickets/const.py:36 msgid "Close" msgstr "关闭" @@ -1870,19 +1869,19 @@ msgstr "请使用密码登录,然后绑定飞书" msgid "Binding FeiShu failed" msgstr "绑定飞书失败" -#: authentication/views/login.py:78 +#: authentication/views/login.py:80 msgid "Redirecting" msgstr "跳转中" -#: authentication/views/login.py:79 +#: authentication/views/login.py:81 msgid "Redirecting to {} authentication" msgstr "正在跳转到 {} 认证" -#: authentication/views/login.py:105 +#: authentication/views/login.py:107 msgid "Please enable cookies and try again." msgstr "设置你的浏览器支持cookie" -#: authentication/views/login.py:224 +#: authentication/views/login.py:227 msgid "" "Wait for {} confirm, You also can copy link to her/him
\n" " Don't close this page" @@ -1890,15 +1889,15 @@ msgstr "" "等待 {} 确认, 你也可以复制链接发给他/她
\n" " 不要关闭本页面" -#: authentication/views/login.py:229 +#: authentication/views/login.py:232 msgid "No ticket found" msgstr "没有发现工单" -#: authentication/views/login.py:261 +#: authentication/views/login.py:264 msgid "Logout success" msgstr "退出登录成功" -#: authentication/views/login.py:262 +#: authentication/views/login.py:265 msgid "Logout success, return login page" msgstr "退出登录成功,返回到登录页面" @@ -1949,6 +1948,10 @@ msgstr "%(name)s 创建成功" msgid "%(name)s was updated successfully" msgstr "%(name)s 更新成功" +#: common/db/encoder.py:17 +msgid "ugettext_lazy" +msgstr "" + #: common/db/models.py:71 msgid "Updated by" msgstr "更新人" @@ -2086,7 +2089,7 @@ msgstr "" "div>" #: notifications/backends/__init__.py:12 users/forms/profile.py:101 -#: users/models/user.py:563 +#: users/models/user.py:559 msgid "Email" msgstr "邮件" @@ -2289,7 +2292,7 @@ msgstr "组织审计员" msgid "GLOBAL" msgstr "全局组织" -#: orgs/models.py:434 users/models/user.py:571 users/serializers/user.py:36 +#: orgs/models.py:434 users/models/user.py:567 users/serializers/user.py:36 #: users/templates/users/_select_user_modal.html:15 msgid "Role" msgstr "角色" @@ -2302,7 +2305,7 @@ msgstr "管理员正在修改授权,请稍等" msgid "The authorization cannot be revoked for the time being" msgstr "该授权暂时不能撤销" -#: perms/models/application_permission.py:27 users/models/user.py:177 +#: perms/models/application_permission.py:27 users/models/user.py:176 msgid "Application" msgstr "应用程序" @@ -2339,9 +2342,9 @@ msgid "Clipboard copy paste" msgstr "剪贴板复制粘贴" #: perms/models/asset_permission.py:102 -#: perms/serializers/application/permission.py:39 +#: perms/serializers/application/permission.py:41 #: perms/serializers/asset/permission.py:41 -#: perms/serializers/asset/permission.py:69 +#: perms/serializers/asset/permission.py:71 msgid "Actions" msgstr "动作" @@ -2353,8 +2356,8 @@ msgstr "未分组" msgid "Favorite" msgstr "收藏夹" -#: perms/models/base.py:51 templates/_nav.html:21 users/models/group.py:31 -#: users/models/user.py:567 users/templates/users/_select_user_modal.html:16 +#: perms/models/base.py:47 templates/_nav.html:21 users/models/group.py:31 +#: users/models/user.py:563 users/templates/users/_select_user_modal.html:16 #: users/templates/users/user_asset_permission.html:39 #: users/templates/users/user_asset_permission.html:67 #: users/templates/users/user_database_app_permission.html:38 @@ -2362,68 +2365,79 @@ msgstr "收藏夹" msgid "User group" msgstr "用户组" -#: perms/models/base.py:54 -#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:46 -#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:77 -#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:43 -#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:81 -#: users/models/user.py:599 +#: perms/models/base.py:50 +#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:56 +#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:48 +#: users/models/user.py:595 msgid "Date expired" msgstr "失效日期" -#: perms/serializers/application/permission.py:18 -#: perms/serializers/application/permission.py:38 -#: perms/serializers/asset/permission.py:42 -#: perms/serializers/asset/permission.py:68 users/serializers/user.py:76 +#: perms/models/base.py:54 +#, fuzzy +#| msgid "No ticket found" +msgid "From ticket" +msgstr "没有发现工单" + +#: perms/serializers/application/permission.py:17 +#: perms/serializers/asset/permission.py:43 +#, fuzzy +#| msgid "Authentication failed" +msgid "Authorization rules" +msgstr "认证失败" + +#: perms/serializers/application/permission.py:20 +#: perms/serializers/application/permission.py:40 +#: perms/serializers/asset/permission.py:44 +#: perms/serializers/asset/permission.py:70 users/serializers/user.py:76 msgid "Is valid" msgstr "账户是否有效" -#: perms/serializers/application/permission.py:19 -#: perms/serializers/application/permission.py:37 -#: perms/serializers/asset/permission.py:43 -#: perms/serializers/asset/permission.py:67 users/serializers/user.py:28 +#: perms/serializers/application/permission.py:21 +#: perms/serializers/application/permission.py:39 +#: perms/serializers/asset/permission.py:45 +#: perms/serializers/asset/permission.py:69 users/serializers/user.py:28 #: users/serializers/user.py:77 msgid "Is expired" msgstr "是否过期" -#: perms/serializers/application/permission.py:40 -#: perms/serializers/asset/permission.py:70 users/serializers/group.py:34 +#: perms/serializers/application/permission.py:42 +#: perms/serializers/asset/permission.py:72 users/serializers/group.py:34 msgid "Users amount" msgstr "用户数量" -#: perms/serializers/application/permission.py:41 -#: perms/serializers/asset/permission.py:71 +#: perms/serializers/application/permission.py:43 +#: perms/serializers/asset/permission.py:73 msgid "User groups amount" msgstr "用户组数量" -#: perms/serializers/application/permission.py:42 -#: perms/serializers/asset/permission.py:74 +#: perms/serializers/application/permission.py:44 +#: perms/serializers/asset/permission.py:76 msgid "System users amount" msgstr "系统用户数量" -#: perms/serializers/application/permission.py:66 +#: perms/serializers/application/permission.py:68 msgid "" "The application list contains applications that are different from the " "permission type. ({})" msgstr "应用列表中包含与授权类型不同的应用。({})" -#: perms/serializers/asset/permission.py:44 +#: perms/serializers/asset/permission.py:46 msgid "Users display" msgstr "用户名称" -#: perms/serializers/asset/permission.py:45 +#: perms/serializers/asset/permission.py:47 msgid "User groups display" msgstr "用户名称" -#: perms/serializers/asset/permission.py:46 +#: perms/serializers/asset/permission.py:48 msgid "Assets display" msgstr "资产名称" -#: perms/serializers/asset/permission.py:47 +#: perms/serializers/asset/permission.py:49 msgid "Nodes display" msgstr "节点名称" -#: perms/serializers/asset/permission.py:48 +#: perms/serializers/asset/permission.py:50 msgid "System users display" msgstr "系统用户名称" @@ -3724,10 +3738,6 @@ msgstr "忽略证书认证" msgid "Not found" msgstr "没有发现" -#: tickets/api/ticket.py:61 tickets/api/ticket.py:70 -msgid "Ticket already closed" -msgstr "工单已经关闭" - #: tickets/const.py:8 msgid "General" msgstr "一般" @@ -3740,133 +3750,139 @@ msgstr "申请资产" msgid "Apply for application" msgstr "申请应用" -#: tickets/const.py:17 tickets/const.py:24 +#: tickets/const.py:17 tickets/const.py:30 tickets/const.py:35 msgid "Open" msgstr "打开" -#: tickets/const.py:18 -msgid "Approve" +#: tickets/const.py:18 tickets/const.py:25 +#, fuzzy +#| msgid "Approve" +msgid "Approved" msgstr "同意" -#: tickets/const.py:25 +#: tickets/const.py:19 tickets/const.py:26 +#, fuzzy +#| msgid "Reject" +msgid "Rejected" +msgstr "拒绝" + +#: tickets/const.py:20 tickets/const.py:31 msgid "Closed" msgstr "关闭" -#: tickets/handler/apply_application.py:55 +#: tickets/const.py:24 +msgid "Notified" +msgstr "" + +#: tickets/const.py:37 +msgid "Approve" +msgstr "同意" + +#: tickets/const.py:42 +msgid "One level" +msgstr "1级审批" + +#: tickets/const.py:43 +msgid "Two level" +msgstr "2级审批" + +#: tickets/const.py:47 +#, fuzzy +#| msgid "Super role name" +msgid "Super admin" +msgstr "超级角色名称" + +#: tickets/const.py:48 +#, fuzzy +#| msgid "Org name" +msgid "Org admin" +msgstr "组织名称" + +#: tickets/const.py:49 +msgid "Super admin and org admin" +msgstr "" + +#: tickets/const.py:50 +#, fuzzy +#| msgid "System user" +msgid "Custom user" +msgstr "系统用户" + +#: tickets/errors.py:9 +msgid "Ticket already closed" +msgstr "工单已经关闭" + +#: tickets/handler/apply_application.py:51 msgid "Applied category" msgstr "申请的类别" -#: tickets/handler/apply_application.py:56 +#: tickets/handler/apply_application.py:52 msgid "Applied type" msgstr "申请的类型" -#: tickets/handler/apply_application.py:57 +#: tickets/handler/apply_application.py:53 msgid "Applied application group" msgstr "申请的应用组" -#: tickets/handler/apply_application.py:58 tickets/handler/apply_asset.py:59 +#: tickets/handler/apply_application.py:54 tickets/handler/apply_asset.py:47 msgid "Applied system user group" msgstr "申请的系统用户组" -#: tickets/handler/apply_application.py:59 tickets/handler/apply_asset.py:61 +#: tickets/handler/apply_application.py:55 tickets/handler/apply_asset.py:49 msgid "Applied date start" msgstr "申请的开始日期" -#: tickets/handler/apply_application.py:60 tickets/handler/apply_asset.py:62 +#: tickets/handler/apply_application.py:56 tickets/handler/apply_asset.py:50 msgid "Applied date expired" msgstr "申请的失效日期" -#: tickets/handler/apply_application.py:75 -msgid "Approved applications" -msgstr "批准的应用" - -#: tickets/handler/apply_application.py:76 tickets/handler/apply_asset.py:79 -msgid "Approved system users" -msgstr "批准的系统用户" - -#: tickets/handler/apply_application.py:77 tickets/handler/apply_asset.py:81 -msgid "Approved date start" -msgstr "批准的开始日期" - -#: tickets/handler/apply_application.py:78 tickets/handler/apply_asset.py:82 -msgid "Approved date expired" -msgstr "批准的失效日期" - -#: tickets/handler/apply_application.py:100 tickets/handler/apply_asset.py:103 +#: tickets/handler/apply_application.py:78 tickets/handler/apply_asset.py:71 msgid "" "Created by the ticket, ticket title: {}, ticket applicant: {}, ticket " "processor: {}, ticket ID: {}" msgstr "" "通过工单创建, 工单标题: {}, 工单申请人: {}, 工单处理人: {}, 工单 ID: {}" -#: tickets/handler/apply_asset.py:57 -msgid "Applied IP group" -msgstr "申请的IP组" - -#: tickets/handler/apply_asset.py:58 +#: tickets/handler/apply_asset.py:46 msgid "Applied hostname group" msgstr "申请的主机名组" -#: tickets/handler/apply_asset.py:60 +#: tickets/handler/apply_asset.py:48 msgid "Applied actions" msgstr "申请的动作" -#: tickets/handler/apply_asset.py:78 -msgid "Approved assets" -msgstr "批准的资产" - -#: tickets/handler/apply_asset.py:80 -msgid "Approved actions" -msgstr "批准的动作" - -#: tickets/handler/base.py:62 +#: tickets/handler/base.py:86 msgid "{} {} the ticket" msgstr "{} {}工单" -#: tickets/handler/base.py:91 +#: tickets/handler/base.py:113 msgid "Ticket title" msgstr "工单标题" -#: tickets/handler/base.py:92 +#: tickets/handler/base.py:114 msgid "Ticket type" msgstr "工单类型" -#: tickets/handler/base.py:93 +#: tickets/handler/base.py:115 msgid "Ticket status" msgstr "工单状态" -#: tickets/handler/base.py:94 -msgid "Ticket action" -msgstr "工单动作" - -#: tickets/handler/base.py:95 +#: tickets/handler/base.py:116 msgid "Ticket applicant" msgstr "工单申请人" -#: tickets/handler/base.py:96 -msgid "Ticket assignees" -msgstr "工单受理人" - -#: tickets/handler/base.py:99 -msgid "Ticket processor" -msgstr "工单处理人" - -#: tickets/handler/base.py:100 +#: tickets/handler/base.py:118 msgid "Ticket basic info" msgstr "工单基本信息" -#: tickets/handler/base.py:114 tickets/handler/base.py:121 +#: tickets/handler/base.py:129 msgid "No content" msgstr "无内容" -#: tickets/handler/base.py:116 +#: tickets/handler/base.py:131 msgid "Ticket applied info" msgstr "工单申请信息" -#: tickets/handler/base.py:123 -msgid "Ticket approved info" -msgstr "工单批准信息" - #: tickets/handler/command_confirm.py:24 msgid "Applied run user" msgstr "申请运行的用户" @@ -3927,105 +3943,141 @@ msgstr "用户显示名称" msgid "Body" msgstr "内容" -#: tickets/models/ticket.py:28 -msgid "ugettext_lazy" -msgstr "" +#: tickets/models/flow.py:19 tickets/models/ticket.py:25 +msgid "Approve level" +msgstr "审批等级" -#: tickets/models/ticket.py:35 -msgid "Title" -msgstr "标题" +#: tickets/models/flow.py:24 tickets/serializers/ticket/ticket.py:140 +#, fuzzy +#| msgid "Approved date start" +msgid "Approve strategy" +msgstr "批准的开始日期" -#: tickets/models/ticket.py:52 -msgid "Applicant" -msgstr "申请人" - -#: tickets/models/ticket.py:55 -msgid "Applicant display" -msgstr "申请人名称" - -#: tickets/models/ticket.py:60 -msgid "Processor" -msgstr "处理人" - -#: tickets/models/ticket.py:63 -msgid "Processor display" -msgstr "处理人名称" - -#: tickets/models/ticket.py:67 +#: tickets/models/flow.py:29 tickets/serializers/ticket/ticket.py:141 msgid "Assignees" msgstr "受理人" -#: tickets/models/ticket.py:70 +#: tickets/models/flow.py:33 msgid "Assignees display" msgstr "受理人名称" +#: tickets/models/flow.py:37 +#, fuzzy +#| msgid "Ticket approved info" +msgid "Ticket flow approval rule" +msgstr "工单批准信息" + +#: tickets/models/flow.py:55 +#, fuzzy +#| msgid "Approve level" +msgid "Approval level" +msgstr "审批等级" + +#: tickets/models/flow.py:60 +#, fuzzy +#| msgid "Ticket title" +msgid "Ticket flow" +msgstr "工单标题" + +#: tickets/models/ticket.py:38 +#, fuzzy +#| msgid "Ticket assignees" +msgid "Ticket assignee" +msgstr "工单受理人" + +#: tickets/models/ticket.py:45 +msgid "Title" +msgstr "标题" + +#: tickets/models/ticket.py:53 +#, fuzzy +#| msgid "Status" +msgid "State" +msgstr "状态" + +#: tickets/models/ticket.py:61 +#, fuzzy +#| msgid "Approve" +msgid "Approval step" +msgstr "同意" + +#: tickets/models/ticket.py:66 +msgid "Applicant" +msgstr "申请人" + +#: tickets/models/ticket.py:68 +msgid "Applicant display" +msgstr "申请人名称" + +#: tickets/models/ticket.py:69 +#, fuzzy +#| msgid "Processor" +msgid "Process" +msgstr "处理人" + +#: tickets/models/ticket.py:74 +#, fuzzy +#| msgid "Tickets" +msgid "TicketFlow" +msgstr "工单管理" + +#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:16 +#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:16 +#, fuzzy +#| msgid "Application name" +msgid "Apply name" +msgstr "应用名称" + #: tickets/serializers/ticket/meta/ticket_type/apply_application.py:35 -msgid "Application group" -msgstr "应用组" +#, fuzzy +#| msgid "Apply for application" +msgid "Apply applications" +msgstr "申请应用" -#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:39 -#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:28 -msgid "System user group" -msgstr "系统用户组" - -#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:53 -#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:50 -msgid "Permission name" -msgstr "授权名称" - -#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:56 -msgid "Approve applications" -msgstr "批准的应用" - -#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:61 -msgid "Approve applications display" +#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:40 +#, fuzzy +#| msgid "Approve applications display" +msgid "Apply applications display" msgstr "批准的应用名称" -#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:65 -#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:62 -msgid "Approve system users" +#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:44 +#, fuzzy +#| msgid "Approve system users" +msgid "Apply system users" msgstr "批准的系统用户" -#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:70 -msgid "Approve system user display" +#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:49 +#, fuzzy +#| msgid "Approve system user display" +msgid "Apply system user display" msgstr "批准的系统用户名称" -#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:90 -#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:94 +#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:69 +#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:61 +#: tickets/serializers/ticket/ticket.py:127 msgid "Permission named `{}` already exists" msgstr "授权名称 `{}` 已存在" -#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:107 -msgid "No `Application` are found under Organization `{}`" -msgstr "在组织 `{}` 下没有发现 `应用`" - -#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:125 -#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:124 -msgid "No `SystemUser` are found under Organization `{}`" -msgstr "在组织 `{}` 下没有发现 `系统用户`" - #: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:20 -msgid "IP group" -msgstr "IP组" +#, fuzzy +#| msgid "Apply for asset" +msgid "Apply assets" +msgstr "申请资产" #: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:24 -msgid "Hostname group" -msgstr "主机名组" - -#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:36 -#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:57 -#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:66 -#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:74 msgid "Approve assets display" msgstr "批准的资产名称" -#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:53 -msgid "Approve assets" -msgstr "批准的资产" +#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:29 +msgid "Approve system users" +msgstr "批准的系统用户" -#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:108 -msgid "No `Asset` are found under Organization `{}`" -msgstr "在组织 `{}` 下没有发现 `资产`" +#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:33 +#: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:41 +#, fuzzy +#| msgid "Approve assets display" +msgid "Apply assets display" +msgstr "批准的资产名称" #: tickets/serializers/ticket/meta/ticket_type/command_confirm.py:12 msgid "Run user" @@ -4056,6 +4108,7 @@ msgid "From cmd filter" msgstr "来自命令过滤规则" #: tickets/serializers/ticket/meta/ticket_type/common.py:11 +#: tickets/serializers/ticket/ticket.py:122 msgid "Created by ticket ({}-{})" msgstr "通过工单创建 ({}-{})" @@ -4075,49 +4128,53 @@ msgstr "登录系统用户" msgid "Login datetime" msgstr "登录日期" -#: tickets/serializers/ticket/ticket.py:21 -msgid "Action display" -msgstr "动作名称" - -#: tickets/serializers/ticket/ticket.py:101 +#: tickets/serializers/ticket/ticket.py:95 msgid "" "The `type` in the submission data (`{}`) is different from the type in the " "request url (`{}`)" msgstr "提交数据中的类型 (`{}`) 与请求URL地址中的类型 (`{}`) 不一致" -#: tickets/serializers/ticket/ticket.py:122 -msgid "None of the assignees belong to Organization `{}` admins" -msgstr "所有受理人都不属于组织 `{}` 下的管理员" +#: tickets/serializers/ticket/ticket.py:115 +#, fuzzy +#| msgid "The organization `{}` does not exist" +msgid "The ticket flow `{}` does not exist" +msgstr "组织 `{}` 不存在" -#: tickets/utils.py:36 +#: tickets/serializers/ticket/ticket.py:182 +#, fuzzy +#| msgid "The current organization ({}) cannot be deleted" +msgid "The current organization type already exists" +msgstr "当前组织 ({}) 不能被删除" + +#: tickets/utils.py:37 msgid "New Ticket - {} ({})" msgstr "新工单 - {} ({})" -#: tickets/utils.py:38 +#: tickets/utils.py:39 msgid "Your has a new ticket, applicant - {}" msgstr "你有一个新的工单, 申请人 - {}" -#: tickets/utils.py:40 tickets/utils.py:59 +#: tickets/utils.py:41 tickets/utils.py:60 msgid "click here to review" msgstr "点击查看" -#: tickets/utils.py:55 +#: tickets/utils.py:56 msgid "Ticket has processed - {} ({})" msgstr "工单已处理 - {} ({})" -#: tickets/utils.py:57 +#: tickets/utils.py:58 msgid "Your ticket has been processed, processor - {}" msgstr "你的工单已被处理, 处理人 - {}" -#: users/api/user.py:214 +#: users/api/user.py:207 msgid "Could not reset self otp, use profile reset instead" msgstr "不能在该页面重置多因子认证, 请去个人信息页面重置" -#: users/const.py:10 users/models/user.py:174 +#: users/const.py:10 users/models/user.py:173 msgid "System administrator" msgstr "系统管理员" -#: users/const.py:11 users/models/user.py:175 +#: users/const.py:11 users/models/user.py:174 msgid "System auditor" msgstr "系统审计员" @@ -4204,48 +4261,48 @@ msgstr "不能和原来的密钥相同" msgid "Not a valid ssh public key" msgstr "SSH密钥不合法" -#: users/forms/profile.py:160 users/models/user.py:591 +#: users/forms/profile.py:160 users/models/user.py:587 #: users/templates/users/user_password_update.html:48 msgid "Public key" msgstr "SSH公钥" -#: users/models/user.py:470 +#: users/models/user.py:466 msgid "Force enable" msgstr "强制启用" -#: users/models/user.py:540 +#: users/models/user.py:536 msgid "Local" msgstr "数据库" -#: users/models/user.py:574 +#: users/models/user.py:570 msgid "Avatar" msgstr "头像" -#: users/models/user.py:577 +#: users/models/user.py:573 msgid "Wechat" msgstr "微信" -#: users/models/user.py:588 +#: users/models/user.py:584 msgid "Private key" msgstr "ssh私钥" -#: users/models/user.py:607 +#: users/models/user.py:603 msgid "Source" msgstr "来源" -#: users/models/user.py:611 +#: users/models/user.py:607 msgid "Date password last updated" msgstr "最后更新密码日期" -#: users/models/user.py:614 +#: users/models/user.py:610 msgid "Need update password" msgstr "需要更新密码" -#: users/models/user.py:770 +#: users/models/user.py:766 msgid "Administrator" msgstr "管理员" -#: users/models/user.py:773 +#: users/models/user.py:769 msgid "Administrator is the super user of system" msgstr "Administrator是初始的超级管理员" @@ -4942,6 +4999,11 @@ msgstr "清空当前账号密钥再追加新密钥" msgid "Password rules" msgstr "密码规则" +#: xpack/plugins/change_auth_plan/models.py:78 +#: xpack/plugins/change_auth_plan/serializers.py:35 +msgid "SSH Key strategy" +msgstr "SSH Key 策略" + #: xpack/plugins/change_auth_plan/models.py:189 msgid "Manual trigger" msgstr "手动触发" @@ -5004,10 +5066,6 @@ msgstr "修改密码" msgid "Change SSH Key" msgstr "修改密钥" -#: xpack/plugins/change_auth_plan/serializers.py:35 -msgid "SSH Key strategy" -msgstr "SSH Key 策略" - #: xpack/plugins/change_auth_plan/serializers.py:61 msgid "Run times" msgstr "执行次数" @@ -5356,6 +5414,12 @@ msgstr "租户 ID" msgid "Subscription ID" msgstr "订阅 ID" +#: xpack/plugins/cloud/serializers.py:51 +#, fuzzy +#| msgid "This field is required." +msgid "This field is required" +msgstr "该字段是必填项。" + #: xpack/plugins/cloud/serializers.py:85 xpack/plugins/cloud/serializers.py:89 msgid "API Endpoint" msgstr "API 端点" @@ -5470,6 +5534,69 @@ msgstr "旗舰版" msgid "Community edition" msgstr "社区版" +#~ msgid "Approved applications" +#~ msgstr "批准的应用" + +#~ msgid "Approved system users" +#~ msgstr "批准的系统用户" + +#~ msgid "Approved date expired" +#~ msgstr "批准的失效日期" + +#~ msgid "Applied IP group" +#~ msgstr "申请的IP组" + +#~ msgid "Approved assets" +#~ msgstr "批准的资产" + +#~ msgid "Approved actions" +#~ msgstr "批准的动作" + +#~ msgid "Ticket action" +#~ msgstr "工单动作" + +#~ msgid "Ticket processor" +#~ msgstr "工单处理人" + +#~ msgid "Processor display" +#~ msgstr "处理人名称" + +#~ msgid "Application group" +#~ msgstr "应用组" + +#~ msgid "System user group" +#~ msgstr "系统用户组" + +#~ msgid "Permission name" +#~ msgstr "授权名称" + +#~ msgid "Approve applications" +#~ msgstr "批准的应用" + +#~ msgid "No `Application` are found under Organization `{}`" +#~ msgstr "在组织 `{}` 下没有发现 `应用`" + +#~ msgid "No `SystemUser` are found under Organization `{}`" +#~ msgstr "在组织 `{}` 下没有发现 `系统用户`" + +#~ msgid "IP group" +#~ msgstr "IP组" + +#~ msgid "Hostname group" +#~ msgstr "主机名组" + +#~ msgid "Approve assets" +#~ msgstr "批准的资产" + +#~ msgid "No `Asset` are found under Organization `{}`" +#~ msgstr "在组织 `{}` 下没有发现 `资产`" + +#~ msgid "Action display" +#~ msgstr "动作名称" + +#~ msgid "None of the assignees belong to Organization `{}` admins" +#~ msgstr "所有受理人都不属于组织 `{}` 下的管理员" + #~ msgid "* Please enter custom password" #~ msgstr "* 请输入自定义密码" diff --git a/apps/tickets/migrations/0010_auto_20210812_1618.py b/apps/tickets/migrations/0010_auto_20210812_1618.py index 0f6868a3f..01d1e1e0c 100644 --- a/apps/tickets/migrations/0010_auto_20210812_1618.py +++ b/apps/tickets/migrations/0010_auto_20210812_1618.py @@ -6,7 +6,7 @@ from django.db import migrations, models, transaction import django.db.models.deletion import uuid -from tickets.const import TicketType +from tickets.const import TicketType, TicketApprovalStrategy ticket_assignee_m2m = list() @@ -82,9 +82,9 @@ def create_ticket_flow_and_approval_rule(apps, schema_editor): super_user = user_model.objects.filter(role='Admin') assignees_display = ['{0.name}({0.username})'.format(i) for i in super_user] with transaction.atomic(): - for ticket_type in TicketType.values: + for ticket_type in [TicketType.apply_asset, TicketType.apply_application]: ticket_flow_instance = ticket_flow_model.objects.create(created_by='System', type=ticket_type, org_id=org_id) - approval_rule_instance = approval_rule_model.objects.create(strategy='super', assignees_display=assignees_display) + approval_rule_instance = approval_rule_model.objects.create(strategy=TicketApprovalStrategy.super_admin, assignees_display=assignees_display) approval_rule_instance.assignees.set(list(super_user)) ticket_flow_instance.rules.set([approval_rule_instance, ])