diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 27d124dbad066e7c581997b82e21ae13c5acb293..1c1c347551b3c911cf5ad7a019cd1313f60a8cbe 100644 Binary files a/apps/locale/zh/LC_MESSAGES/django.mo and b/apps/locale/zh/LC_MESSAGES/django.mo differ diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 6a8c43190dcf65ee7cf7930aaa6ae9962d75d946..a7d0b23aa4097927e955d348a5bc0a553b7e1303 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: JumpServer 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-08-07 18:48+0800\n" +"POT-Creation-Date: 2020-08-14 16:50+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: applications/const.py:52 +#: applications/const.py:53 msgid "Custom" msgstr "自定义" @@ -27,8 +27,8 @@ msgstr "自定义" #: assets/models/cmd_filter.py:21 assets/models/domain.py:20 #: assets/models/group.py:20 assets/models/label.py:18 ops/mixin.py:24 #: orgs/models.py:22 perms/models/base.py:48 settings/models.py:27 -#: terminal/models.py:26 terminal/models.py:342 terminal/models.py:374 -#: terminal/models.py:411 users/forms/profile.py:20 users/models/group.py:15 +#: terminal/models.py:27 terminal/models.py:344 terminal/models.py:376 +#: terminal/models.py:413 users/forms/profile.py:20 users/models/group.py:15 #: users/models/user.py:489 users/templates/users/_select_user_modal.html:13 #: users/templates/users/user_asset_permission.html:37 #: users/templates/users/user_asset_permission.html:154 @@ -47,7 +47,7 @@ msgid "Name" msgstr "名称" #: applications/models/database_app.py:22 applications/models/k8s_app.py:14 -#: assets/models/cmd_filter.py:52 terminal/models.py:376 terminal/models.py:413 +#: assets/models/cmd_filter.py:52 terminal/models.py:378 terminal/models.py:415 #: tickets/models/ticket.py:40 #: users/templates/users/user_granted_database_app.html:35 msgid "Type" @@ -77,8 +77,8 @@ msgstr "数据库" #: assets/models/cmd_filter.py:57 assets/models/domain.py:21 #: assets/models/domain.py:54 assets/models/group.py:23 #: assets/models/label.py:23 ops/models/adhoc.py:37 orgs/models.py:25 -#: perms/models/base.py:56 settings/models.py:32 terminal/models.py:36 -#: terminal/models.py:381 terminal/models.py:418 users/models/group.py:16 +#: perms/models/base.py:56 settings/models.py:32 terminal/models.py:37 +#: terminal/models.py:383 terminal/models.py:420 users/models/group.py:16 #: users/models/user.py:522 users/templates/users/user_detail.html:115 #: users/templates/users/user_granted_database_app.html:38 #: users/templates/users/user_granted_remote_app.html:37 @@ -116,11 +116,11 @@ msgstr "Kubernetes应用" #: applications/models/remote_app.py:23 assets/models/asset.py:352 #: assets/models/authbook.py:26 assets/models/gathered_user.py:14 #: assets/serializers/admin_user.py:32 assets/serializers/asset_user.py:47 -#: assets/serializers/asset_user.py:84 assets/serializers/system_user.py:44 -#: assets/serializers/system_user.py:176 audits/models.py:38 +#: assets/serializers/asset_user.py:84 assets/serializers/system_user.py:46 +#: assets/serializers/system_user.py:179 audits/models.py:38 #: perms/forms/asset_permission.py:89 perms/models/asset_permission.py:90 #: templates/index.html:82 terminal/backends/command/models.py:19 -#: terminal/backends/command/serializers.py:13 terminal/models.py:187 +#: terminal/backends/command/serializers.py:13 terminal/models.py:188 #: users/templates/users/user_asset_permission.html:40 #: users/templates/users/user_asset_permission.html:70 #: users/templates/users/user_granted_remote_app.html:36 @@ -233,7 +233,7 @@ msgid "Hostname" msgstr "主机名" #: assets/models/asset.py:190 assets/models/domain.py:52 -#: assets/models/user.py:116 terminal/serializers/session.py:29 +#: assets/models/user.py:117 terminal/serializers/session.py:29 msgid "Protocol" msgstr "协议" @@ -247,7 +247,7 @@ msgstr "协议组" msgid "Domain" msgstr "网域" -#: assets/models/asset.py:195 assets/models/user.py:111 +#: assets/models/asset.py:195 assets/models/user.py:112 #: perms/models/asset_permission.py:91 #: xpack/plugins/change_auth_plan/models.py:56 #: xpack/plugins/gathered_user/models.py:24 @@ -261,7 +261,7 @@ msgid "Is active" msgstr "激活" #: assets/models/asset.py:199 assets/models/cluster.py:19 -#: assets/models/user.py:65 templates/_nav.html:44 +#: assets/models/user.py:66 templates/_nav.html:44 #: xpack/plugins/cloud/models.py:133 xpack/plugins/cloud/serializers.py:83 msgid "Admin user" msgstr "管理用户" @@ -453,7 +453,7 @@ msgstr "北京电信" msgid "BGP full netcom" msgstr "BGP全网通" -#: assets/models/cmd_filter.py:33 assets/models/user.py:121 +#: assets/models/cmd_filter.py:33 assets/models/user.py:122 msgid "Command filter" msgstr "命令过滤器" @@ -462,7 +462,7 @@ msgid "Regex" msgstr "正则表达式" #: assets/models/cmd_filter.py:41 ops/models/command.py:23 -#: terminal/backends/command/serializers.py:15 terminal/models.py:196 +#: terminal/backends/command/serializers.py:15 terminal/models.py:197 msgid "Command" msgstr "命令" @@ -478,7 +478,7 @@ msgstr "允许" msgid "Filter" msgstr "过滤器" -#: assets/models/cmd_filter.py:53 assets/models/user.py:115 +#: assets/models/cmd_filter.py:53 assets/models/user.py:116 msgid "Priority" msgstr "优先级" @@ -551,7 +551,7 @@ msgstr "默认资产组" #: perms/forms/asset_permission.py:83 perms/forms/database_app_permission.py:38 #: perms/forms/remote_app_permission.py:40 perms/models/base.py:49 #: templates/index.html:78 terminal/backends/command/models.py:18 -#: terminal/backends/command/serializers.py:12 terminal/models.py:185 +#: terminal/backends/command/serializers.py:12 terminal/models.py:186 #: tickets/models/ticket.py:30 tickets/models/ticket.py:137 #: tickets/serializers/request_asset_perm.py:65 #: tickets/serializers/ticket.py:31 users/forms/group.py:15 @@ -597,8 +597,8 @@ msgstr "收藏夹" msgid "Key" msgstr "键" -#: assets/models/node.py:511 assets/serializers/system_user.py:43 -#: assets/serializers/system_user.py:175 perms/forms/asset_permission.py:92 +#: assets/models/node.py:511 assets/serializers/system_user.py:45 +#: assets/serializers/system_user.py:178 perms/forms/asset_permission.py:92 #: perms/forms/asset_permission.py:99 #: users/templates/users/user_asset_permission.html:41 #: users/templates/users/user_asset_permission.html:73 @@ -607,65 +607,73 @@ msgstr "键" msgid "Node" msgstr "节点" -#: assets/models/user.py:107 +#: assets/models/user.py:108 msgid "Automatic login" msgstr "自动登录" -#: assets/models/user.py:108 +#: assets/models/user.py:109 msgid "Manually login" msgstr "手动登录" -#: assets/models/user.py:110 +#: assets/models/user.py:111 msgid "Username same with user" msgstr "用户名与用户相同" -#: assets/models/user.py:112 templates/_nav.html:39 +#: assets/models/user.py:113 templates/_nav.html:39 #: xpack/plugins/change_auth_plan/models.py:52 msgid "Assets" msgstr "资产管理" -#: assets/models/user.py:113 templates/_nav.html:17 +#: assets/models/user.py:114 templates/_nav.html:17 #: users/views/profile/password.py:42 users/views/profile/pubkey.py:36 msgid "Users" msgstr "用户管理" -#: assets/models/user.py:114 users/templates/users/user_group_list.html:90 +#: assets/models/user.py:115 users/templates/users/user_group_list.html:90 #: users/templates/users/user_profile.html:124 msgid "User groups" msgstr "用户组" -#: assets/models/user.py:117 +#: assets/models/user.py:118 msgid "Auto push" msgstr "自动推送" -#: assets/models/user.py:118 +#: assets/models/user.py:119 msgid "Sudo" msgstr "Sudo" -#: assets/models/user.py:119 +#: assets/models/user.py:120 msgid "Shell" msgstr "Shell" -#: assets/models/user.py:120 +#: assets/models/user.py:121 msgid "Login mode" msgstr "登录模式" -#: assets/models/user.py:122 +#: assets/models/user.py:123 msgid "SFTP Root" msgstr "SFTP根路径" -#: assets/models/user.py:123 authentication/models.py:88 +#: assets/models/user.py:124 authentication/models.py:88 msgid "Token" msgstr "" -#: assets/models/user.py:198 audits/models.py:39 +#: assets/models/user.py:125 +msgid "Home" +msgstr "家目录" + +#: assets/models/user.py:126 +msgid "System groups" +msgstr "用户组" + +#: assets/models/user.py:201 audits/models.py:39 #: perms/forms/asset_permission.py:95 perms/forms/remote_app_permission.py:49 #: perms/models/asset_permission.py:92 #: perms/models/database_app_permission.py:22 #: perms/models/k8s_app_permission.py:22 #: perms/models/remote_app_permission.py:16 templates/_nav.html:45 #: terminal/backends/command/models.py:20 -#: terminal/backends/command/serializers.py:14 terminal/models.py:189 +#: terminal/backends/command/serializers.py:14 terminal/models.py:190 #: tickets/serializers/request_asset_perm.py:27 #: users/templates/users/_granted_assets.html:27 #: users/templates/users/user_asset_permission.html:42 @@ -753,23 +761,23 @@ msgstr "值" msgid "The same level node name cannot be the same" msgstr "同级别节点名字不能重复" -#: assets/serializers/system_user.py:45 assets/serializers/system_user.py:177 +#: assets/serializers/system_user.py:47 assets/serializers/system_user.py:180 msgid "Login mode display" msgstr "登录模式显示" -#: assets/serializers/system_user.py:85 +#: assets/serializers/system_user.py:87 msgid "Username same with user with protocol {} only allow 1" msgstr "用户名和用户相同的一种协议只允许存在一个" -#: assets/serializers/system_user.py:98 +#: assets/serializers/system_user.py:100 msgid "* Automatic login mode must fill in the username." msgstr "自动登录模式,必须填写用户名" -#: assets/serializers/system_user.py:106 +#: assets/serializers/system_user.py:108 msgid "Path should starts with /" msgstr "路径应该以 / 开头" -#: assets/serializers/system_user.py:117 +#: assets/serializers/system_user.py:119 msgid "Password or private key required" msgstr "密码或密钥密码需要一个" @@ -821,25 +829,25 @@ msgstr "更新节点资产硬件信息: {}" msgid "Gather assets users" msgstr "收集资产上的用户" -#: assets/tasks/push_system_user.py:148 +#: assets/tasks/push_system_user.py:176 #: assets/tasks/system_user_connectivity.py:89 msgid "System user is dynamic: {}" msgstr "系统用户是动态的: {}" -#: assets/tasks/push_system_user.py:179 +#: assets/tasks/push_system_user.py:207 msgid "Start push system user for platform: [{}]" msgstr "推送系统用户到平台: [{}]" -#: assets/tasks/push_system_user.py:180 +#: assets/tasks/push_system_user.py:208 #: assets/tasks/system_user_connectivity.py:81 msgid "Hosts count: {}" msgstr "主机数量: {}" -#: assets/tasks/push_system_user.py:197 assets/tasks/push_system_user.py:213 +#: assets/tasks/push_system_user.py:225 assets/tasks/push_system_user.py:241 msgid "Push system users to assets: {}" msgstr "推送系统用户到入资产: {}" -#: assets/tasks/push_system_user.py:205 +#: assets/tasks/push_system_user.py:233 msgid "Push system users to asset: {}({}) => {}" msgstr "推送系统用户到入资产: {}({}) => {}" @@ -919,7 +927,7 @@ msgid "Symlink" msgstr "建立软链接" #: audits/models.py:37 audits/models.py:60 audits/models.py:71 -#: terminal/models.py:192 +#: terminal/models.py:193 msgid "Remote addr" msgstr "远端地址" @@ -937,7 +945,7 @@ msgid "Success" msgstr "成功" #: audits/models.py:43 ops/models/command.py:28 perms/models/base.py:52 -#: terminal/models.py:199 tickets/serializers/request_asset_perm.py:29 +#: terminal/models.py:200 tickets/serializers/request_asset_perm.py:29 #: xpack/plugins/change_auth_plan/models.py:177 #: xpack/plugins/change_auth_plan/models.py:308 #: xpack/plugins/gathered_user/models.py:76 @@ -1191,7 +1199,7 @@ msgstr "登录复核 {}" msgid "SSO auth closed" msgstr "SSO 认证关闭了" -#: authentication/errors.py:218 authentication/views/login.py:237 +#: authentication/errors.py:218 authentication/views/login.py:243 msgid "Your password is too simple, please change it for security" msgstr "你的密码过于简单,为了安全,请修改" @@ -1374,11 +1382,11 @@ msgstr "复制成功" msgid "Welcome back, please enter username and password to login" msgstr "欢迎回来,请输入用户名和密码登录" -#: authentication/views/login.py:83 +#: authentication/views/login.py:84 msgid "Please enable cookies and try again." msgstr "设置你的浏览器支持cookie" -#: authentication/views/login.py:183 +#: authentication/views/login.py:189 msgid "" "Wait for {} confirm, You also can copy link to her/him
\n" " Don't close this page" @@ -1386,19 +1394,19 @@ msgstr "" "等待 {} 确认, 你也可以复制链接发给他/她
\n" " 不要关闭本页面" -#: authentication/views/login.py:188 +#: authentication/views/login.py:194 msgid "No ticket found" msgstr "没有发现工单" -#: authentication/views/login.py:220 +#: authentication/views/login.py:226 msgid "Logout success" msgstr "退出登录成功" -#: authentication/views/login.py:221 +#: authentication/views/login.py:227 msgid "Logout success, return login page" msgstr "退出登录成功,返回到登录页面" -#: authentication/views/login.py:236 +#: authentication/views/login.py:242 msgid "Please change your password" msgstr "请修改密码" @@ -2469,63 +2477,63 @@ msgstr "风险等级" msgid "Bulk create not support" msgstr "不支持批量创建" -#: terminal/models.py:27 +#: terminal/models.py:28 msgid "Remote Address" msgstr "远端地址" -#: terminal/models.py:28 +#: terminal/models.py:29 msgid "SSH Port" msgstr "SSH端口" -#: terminal/models.py:29 +#: terminal/models.py:30 msgid "HTTP Port" msgstr "HTTP端口" -#: terminal/models.py:30 +#: terminal/models.py:31 msgid "Command storage" msgstr "命令存储" -#: terminal/models.py:31 +#: terminal/models.py:32 msgid "Replay storage" msgstr "录像存储" -#: terminal/models.py:154 +#: terminal/models.py:155 msgid "Session Online" msgstr "在线会话" -#: terminal/models.py:155 +#: terminal/models.py:156 msgid "CPU Usage" msgstr "CPU使用" -#: terminal/models.py:156 +#: terminal/models.py:157 msgid "Memory Used" msgstr "内存使用" -#: terminal/models.py:157 +#: terminal/models.py:158 msgid "Connections" msgstr "连接数" -#: terminal/models.py:158 +#: terminal/models.py:159 msgid "Threads" msgstr "线程数" -#: terminal/models.py:159 +#: terminal/models.py:160 msgid "Boot Time" msgstr "运行时间" -#: terminal/models.py:191 +#: terminal/models.py:192 msgid "Login from" msgstr "登录来源" -#: terminal/models.py:195 +#: terminal/models.py:196 msgid "Replay" msgstr "回放" -#: terminal/models.py:200 +#: terminal/models.py:201 msgid "Date end" msgstr "结束日期" -#: terminal/models.py:343 +#: terminal/models.py:345 msgid "Args" msgstr "参数" @@ -2863,12 +2871,12 @@ msgid "Password strategy" msgstr "密码策略" #: users/models/user.py:156 -msgid "Super administrator" -msgstr "超级管理员" +msgid "System administrator" +msgstr "系统管理员" #: users/models/user.py:158 -msgid "Super auditor" -msgstr "超级审计员" +msgid "System auditor" +msgstr "系统审计员" #: users/models/user.py:159 msgid "Application" @@ -4489,9 +4497,6 @@ msgstr "旗舰版" #~ msgid "Have existed: " #~ msgstr "已经存在: " -#~ msgid "Home" -#~ msgstr "家目录" - #~ msgid "Uid" #~ msgstr "Uid" diff --git a/apps/users/migrations/0029_auto_20200814_1650.py b/apps/users/migrations/0029_auto_20200814_1650.py new file mode 100644 index 0000000000000000000000000000000000000000..c6cf3517b42e2e87054725ec2d748cab7866a7c7 --- /dev/null +++ b/apps/users/migrations/0029_auto_20200814_1650.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.13 on 2020-08-14 08:50 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0028_auto_20200728_1805'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='role', + field=models.CharField(blank=True, choices=[('Admin', 'System administrator'), ('User', 'User'), ('Auditor', 'System auditor'), ('App', 'Application')], default='User', max_length=10, verbose_name='Role'), + ), + ] diff --git a/apps/users/models/user.py b/apps/users/models/user.py index 6bda75b0ada4cdfb71e46649ee032a289929cc21..b496f17bd04ffae9c7699f1002488ee10ff8085d 100644 --- a/apps/users/models/user.py +++ b/apps/users/models/user.py @@ -153,9 +153,9 @@ class AuthMixin: class RoleMixin: class ROLE(ChoiceSet): - ADMIN = choices.ADMIN, _('Super administrator') + ADMIN = choices.ADMIN, _('System administrator') USER = choices.USER, _('User') - AUDITOR = choices.AUDITOR, _('Super auditor') + AUDITOR = choices.AUDITOR, _('System auditor') APP = 'App', _('Application') role = ROLE.USER diff --git a/apps/users/serializers/user.py b/apps/users/serializers/user.py index 908978d75a331acb4247a93fef2f996aa9fdeb19..e246ba2032216cfa1886118e72327691de3e879b 100644 --- a/apps/users/serializers/user.py +++ b/apps/users/serializers/user.py @@ -111,7 +111,12 @@ class UserSerializer(CommonBulkSerializerMixin, serializers.ModelSerializer): role._choices = choices def get_total_role_display(self, instance): - return ' | '.join({str(instance.role_display), str(instance.org_role_display)}) + role_display = instance.role_display + org_role_display = instance.org_role_display + if role_display == org_role_display: + return role_display + else: + return f'{role_display} | {org_role_display}' def validate_role(self, value): request = self.context.get('request')