mirror of https://github.com/jumpserver/jumpserver
parent
68ccec6b9c
commit
720dc9ab05
|
@ -242,7 +242,6 @@ LOGGING = {
|
||||||
# https://docs.djangoproject.com/en/1.10/topics/i18n/
|
# https://docs.djangoproject.com/en/1.10/topics/i18n/
|
||||||
LANGUAGE_CODE = 'en-us'
|
LANGUAGE_CODE = 'en-us'
|
||||||
|
|
||||||
# TIME_ZONE = 'UTC'
|
|
||||||
TIME_ZONE = 'Asia/Shanghai'
|
TIME_ZONE = 'Asia/Shanghai'
|
||||||
|
|
||||||
USE_I18N = True
|
USE_I18N = True
|
||||||
|
@ -300,7 +299,8 @@ REST_FRAMEWORK = {
|
||||||
'users.authentication.SessionAuthentication',
|
'users.authentication.SessionAuthentication',
|
||||||
),
|
),
|
||||||
'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),
|
'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),
|
||||||
'DATETIME_FORMAT': '%Y-%m-%d %H:%M:%S',
|
'DATETIME_FORMAT': '%Y-%m-%d %H:%M:%S %z',
|
||||||
|
'DATETIME_INPUT_FORMATS': ['%Y-%m-%d %H:%M:%S %z'],
|
||||||
}
|
}
|
||||||
|
|
||||||
AUTHENTICATION_BACKENDS = [
|
AUTHENTICATION_BACKENDS = [
|
||||||
|
|
Binary file not shown.
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Jumpserver 0.3.3\n"
|
"Project-Id-Version: Jumpserver 0.3.3\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2018-01-01 15:33+0800\n"
|
"POT-Creation-Date: 2018-01-02 18:11+0800\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: ibuler <ibuler@qq.com>\n"
|
"Last-Translator: ibuler <ibuler@qq.com>\n"
|
||||||
"Language-Team: Jumpserver team<ibuler@qq.com>\n"
|
"Language-Team: Jumpserver team<ibuler@qq.com>\n"
|
||||||
|
@ -17,7 +17,7 @@ msgstr ""
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: assets/forms.py:23 assets/forms.py:53 assets/forms.py:99 perms/forms.py:36
|
#: assets/forms.py:23 assets/forms.py:53 assets/forms.py:99 perms/forms.py:37
|
||||||
#: perms/templates/perms/asset_permission_asset.html:127 users/forms.py:240
|
#: perms/templates/perms/asset_permission_asset.html:127 users/forms.py:240
|
||||||
msgid "Select asset groups"
|
msgid "Select asset groups"
|
||||||
msgstr "选择资产组"
|
msgstr "选择资产组"
|
||||||
|
@ -43,7 +43,7 @@ msgid "Default using cluster admin user"
|
||||||
msgstr "默认使用管理用户"
|
msgstr "默认使用管理用户"
|
||||||
|
|
||||||
#: assets/forms.py:76 assets/forms.py:81 assets/forms.py:127
|
#: assets/forms.py:76 assets/forms.py:81 assets/forms.py:127
|
||||||
#: assets/templates/assets/asset_group_detail.html:70 perms/forms.py:33
|
#: assets/templates/assets/asset_group_detail.html:70 perms/forms.py:34
|
||||||
#: perms/templates/perms/asset_permission_asset.html:99 users/forms.py:237
|
#: perms/templates/perms/asset_permission_asset.html:99 users/forms.py:237
|
||||||
msgid "Select assets"
|
msgid "Select assets"
|
||||||
msgstr "选择资产"
|
msgstr "选择资产"
|
||||||
|
@ -84,7 +84,7 @@ msgstr "资产"
|
||||||
#: assets/templates/assets/cluster_list.html:19
|
#: assets/templates/assets/cluster_list.html:19
|
||||||
#: assets/templates/assets/system_user_detail.html:53
|
#: assets/templates/assets/system_user_detail.html:53
|
||||||
#: assets/templates/assets/system_user_list.html:24 ops/models.py:31
|
#: assets/templates/assets/system_user_list.html:24 ops/models.py:31
|
||||||
#: ops/templates/ops/task_detail.html:56 ops/templates/ops/task_list.html:39
|
#: ops/templates/ops/task_detail.html:56 ops/templates/ops/task_list.html:34
|
||||||
#: perms/models.py:14
|
#: perms/models.py:14
|
||||||
#: perms/templates/perms/asset_permission_create_update.html:33
|
#: perms/templates/perms/asset_permission_create_update.html:33
|
||||||
#: perms/templates/perms/asset_permission_detail.html:62
|
#: perms/templates/perms/asset_permission_detail.html:62
|
||||||
|
@ -746,7 +746,7 @@ msgstr "不可达"
|
||||||
#: assets/templates/assets/system_user_list.html:31
|
#: assets/templates/assets/system_user_list.html:31
|
||||||
#: assets/templates/assets/user_asset_list.html:27
|
#: assets/templates/assets/user_asset_list.html:27
|
||||||
#: ops/templates/ops/adhoc_history.html:59 ops/templates/ops/task_adhoc.html:61
|
#: ops/templates/ops/adhoc_history.html:59 ops/templates/ops/task_adhoc.html:61
|
||||||
#: ops/templates/ops/task_history.html:62 ops/templates/ops/task_list.html:46
|
#: ops/templates/ops/task_history.html:62 ops/templates/ops/task_list.html:41
|
||||||
#: perms/templates/perms/asset_permission_list.html:32
|
#: perms/templates/perms/asset_permission_list.html:32
|
||||||
#: terminal/templates/terminal/session_list.html:78
|
#: terminal/templates/terminal/session_list.html:78
|
||||||
#: terminal/templates/terminal/terminal_list.html:36
|
#: terminal/templates/terminal/terminal_list.html:36
|
||||||
|
@ -774,7 +774,7 @@ msgstr "更新"
|
||||||
#: assets/templates/assets/asset_list.html:96
|
#: assets/templates/assets/asset_list.html:96
|
||||||
#: assets/templates/assets/cluster_list.html:44
|
#: assets/templates/assets/cluster_list.html:44
|
||||||
#: assets/templates/assets/system_user_list.html:85
|
#: assets/templates/assets/system_user_list.html:85
|
||||||
#: ops/templates/ops/task_list.html:76
|
#: ops/templates/ops/task_list.html:70
|
||||||
#: perms/templates/perms/asset_permission_list.html:74
|
#: perms/templates/perms/asset_permission_list.html:74
|
||||||
#: terminal/templates/terminal/terminal_list.html:73
|
#: terminal/templates/terminal/terminal_list.html:73
|
||||||
#: users/templates/users/user_group_list.html:41
|
#: users/templates/users/user_group_list.html:41
|
||||||
|
@ -1000,7 +1000,6 @@ msgid "Test assets connective"
|
||||||
msgstr "测试资产可连接性"
|
msgstr "测试资产可连接性"
|
||||||
|
|
||||||
#: assets/templates/assets/cluster_assets.html:77
|
#: assets/templates/assets/cluster_assets.html:77
|
||||||
#: ops/templates/ops/task_list.html:75
|
|
||||||
msgid "Run"
|
msgid "Run"
|
||||||
msgstr "执行"
|
msgstr "执行"
|
||||||
|
|
||||||
|
@ -1235,7 +1234,7 @@ msgid "Options"
|
||||||
msgstr "选项"
|
msgstr "选项"
|
||||||
|
|
||||||
#: ops/models.py:152 ops/templates/ops/adhoc_detail.html:53
|
#: ops/models.py:152 ops/templates/ops/adhoc_detail.html:53
|
||||||
#: ops/templates/ops/task_adhoc.html:56 ops/templates/ops/task_list.html:42
|
#: ops/templates/ops/task_adhoc.html:56 ops/templates/ops/task_list.html:37
|
||||||
msgid "Hosts"
|
msgid "Hosts"
|
||||||
msgstr "主机"
|
msgstr "主机"
|
||||||
|
|
||||||
|
@ -1257,36 +1256,36 @@ msgstr "Become"
|
||||||
msgid "Create by"
|
msgid "Create by"
|
||||||
msgstr "创建者"
|
msgstr "创建者"
|
||||||
|
|
||||||
#: ops/models.py:306
|
#: ops/models.py:307
|
||||||
msgid "Start time"
|
msgid "Start time"
|
||||||
msgstr "开始时间"
|
msgstr "开始时间"
|
||||||
|
|
||||||
#: ops/models.py:307
|
#: ops/models.py:308
|
||||||
msgid "End time"
|
msgid "End time"
|
||||||
msgstr "完成时间"
|
msgstr "完成时间"
|
||||||
|
|
||||||
#: ops/models.py:308 ops/templates/ops/adhoc_history.html:57
|
#: ops/models.py:309 ops/templates/ops/adhoc_history.html:57
|
||||||
#: ops/templates/ops/task_history.html:60 ops/templates/ops/task_list.html:45
|
#: ops/templates/ops/task_history.html:60 ops/templates/ops/task_list.html:40
|
||||||
msgid "Time"
|
msgid "Time"
|
||||||
msgstr "时间"
|
msgstr "时间"
|
||||||
|
|
||||||
#: ops/models.py:309 ops/templates/ops/adhoc_detail.html:106
|
#: ops/models.py:310 ops/templates/ops/adhoc_detail.html:106
|
||||||
#: ops/templates/ops/adhoc_history.html:55
|
#: ops/templates/ops/adhoc_history.html:55
|
||||||
#: ops/templates/ops/adhoc_history_detail.html:66
|
#: ops/templates/ops/adhoc_history_detail.html:66
|
||||||
#: ops/templates/ops/task_detail.html:80 ops/templates/ops/task_history.html:58
|
#: ops/templates/ops/task_detail.html:80 ops/templates/ops/task_history.html:58
|
||||||
msgid "Is finished"
|
msgid "Is finished"
|
||||||
msgstr "是否完成"
|
msgstr "是否完成"
|
||||||
|
|
||||||
#: ops/models.py:310 ops/templates/ops/adhoc_history.html:56
|
#: ops/models.py:311 ops/templates/ops/adhoc_history.html:56
|
||||||
#: ops/templates/ops/task_history.html:59
|
#: ops/templates/ops/task_history.html:59
|
||||||
msgid "Is success"
|
msgid "Is success"
|
||||||
msgstr "是否成功"
|
msgstr "是否成功"
|
||||||
|
|
||||||
#: ops/models.py:311
|
#: ops/models.py:312
|
||||||
msgid "Adhoc raw result"
|
msgid "Adhoc raw result"
|
||||||
msgstr "结果"
|
msgstr "结果"
|
||||||
|
|
||||||
#: ops/models.py:312
|
#: ops/models.py:313
|
||||||
msgid "Adhoc result summary"
|
msgid "Adhoc result summary"
|
||||||
msgstr "汇总"
|
msgstr "汇总"
|
||||||
|
|
||||||
|
@ -1296,7 +1295,7 @@ msgid "Version detail"
|
||||||
msgstr "版本详情"
|
msgstr "版本详情"
|
||||||
|
|
||||||
#: ops/templates/ops/adhoc_detail.html:22
|
#: ops/templates/ops/adhoc_detail.html:22
|
||||||
#: ops/templates/ops/adhoc_history.html:22 ops/views.py:120
|
#: ops/templates/ops/adhoc_history.html:22 ops/views.py:104
|
||||||
msgid "Version run history"
|
msgid "Version run history"
|
||||||
msgstr "执行历史"
|
msgstr "执行历史"
|
||||||
|
|
||||||
|
@ -1308,7 +1307,7 @@ msgstr "执行历史"
|
||||||
msgid "ID"
|
msgid "ID"
|
||||||
msgstr "ID"
|
msgstr "ID"
|
||||||
|
|
||||||
#: ops/templates/ops/adhoc_detail.html:94 ops/templates/ops/task_list.html:40
|
#: ops/templates/ops/adhoc_detail.html:94 ops/templates/ops/task_list.html:35
|
||||||
msgid "Run times"
|
msgid "Run times"
|
||||||
msgstr "执行次数"
|
msgstr "执行次数"
|
||||||
|
|
||||||
|
@ -1368,7 +1367,7 @@ msgstr "失败/成功/总"
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "版本"
|
msgstr "版本"
|
||||||
|
|
||||||
#: ops/templates/ops/adhoc_history_detail.html:19 ops/views.py:133
|
#: ops/templates/ops/adhoc_history_detail.html:19 ops/views.py:117
|
||||||
msgid "Run history detail"
|
msgid "Run history detail"
|
||||||
msgstr "执行历史详情"
|
msgstr "执行历史详情"
|
||||||
|
|
||||||
|
@ -1394,12 +1393,12 @@ msgid "Success assets"
|
||||||
msgstr "成功资产"
|
msgstr "成功资产"
|
||||||
|
|
||||||
#: ops/templates/ops/task_adhoc.html:19 ops/templates/ops/task_detail.html:19
|
#: ops/templates/ops/task_adhoc.html:19 ops/templates/ops/task_detail.html:19
|
||||||
#: ops/templates/ops/task_history.html:19 ops/views.py:58
|
#: ops/templates/ops/task_history.html:19 ops/views.py:52
|
||||||
msgid "Task detail"
|
msgid "Task detail"
|
||||||
msgstr "任务详情"
|
msgstr "任务详情"
|
||||||
|
|
||||||
#: ops/templates/ops/task_adhoc.html:22 ops/templates/ops/task_detail.html:22
|
#: ops/templates/ops/task_adhoc.html:22 ops/templates/ops/task_detail.html:22
|
||||||
#: ops/templates/ops/task_history.html:22 ops/views.py:71
|
#: ops/templates/ops/task_history.html:22 ops/views.py:65
|
||||||
msgid "Task versions"
|
msgid "Task versions"
|
||||||
msgstr "任务各版本"
|
msgstr "任务各版本"
|
||||||
|
|
||||||
|
@ -1429,7 +1428,7 @@ msgstr "最新版本"
|
||||||
msgid "Contents"
|
msgid "Contents"
|
||||||
msgstr "内容"
|
msgstr "内容"
|
||||||
|
|
||||||
#: ops/templates/ops/task_list.html:25 ops/templates/ops/task_list.html:30
|
#: ops/templates/ops/task_list.html:20 ops/templates/ops/task_list.html:25
|
||||||
#: templates/_base_list.html:43 templates/_header_bar.html:8
|
#: templates/_base_list.html:43 templates/_header_bar.html:8
|
||||||
#: terminal/templates/terminal/command_list.html:60
|
#: terminal/templates/terminal/command_list.html:60
|
||||||
#: users/templates/users/login_log_list.html:35
|
#: users/templates/users/login_log_list.html:35
|
||||||
|
@ -1437,29 +1436,29 @@ msgstr "内容"
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "搜索"
|
msgstr "搜索"
|
||||||
|
|
||||||
#: ops/templates/ops/task_list.html:41
|
#: ops/templates/ops/task_list.html:36
|
||||||
msgid "Versions"
|
msgid "Versions"
|
||||||
msgstr "版本"
|
msgstr "版本"
|
||||||
|
|
||||||
#: ops/templates/ops/task_list.html:43
|
#: ops/templates/ops/task_list.html:38
|
||||||
msgid "Success"
|
msgid "Success"
|
||||||
msgstr "成功"
|
msgstr "成功"
|
||||||
|
|
||||||
#: ops/templates/ops/task_list.html:44
|
#: ops/templates/ops/task_list.html:39
|
||||||
#: users/templates/users/login_log_list.html:54
|
#: users/templates/users/login_log_list.html:54
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "日期"
|
msgstr "日期"
|
||||||
|
|
||||||
#: ops/views.py:41 ops/views.py:57 ops/views.py:70 ops/views.py:83
|
#: ops/views.py:35 ops/views.py:51 ops/views.py:64 ops/views.py:77
|
||||||
#: ops/views.py:106 ops/views.py:119 ops/views.py:132
|
#: ops/views.py:90 ops/views.py:103 ops/views.py:116
|
||||||
msgid "Ops"
|
msgid "Ops"
|
||||||
msgstr "作业中心"
|
msgstr "作业中心"
|
||||||
|
|
||||||
#: ops/views.py:42
|
#: ops/views.py:36
|
||||||
msgid "Task list"
|
msgid "Task list"
|
||||||
msgstr "任务列表"
|
msgstr "任务列表"
|
||||||
|
|
||||||
#: ops/views.py:84
|
#: ops/views.py:78
|
||||||
msgid "Task run history"
|
msgid "Task run history"
|
||||||
msgstr "执行历史"
|
msgstr "执行历史"
|
||||||
|
|
||||||
|
@ -1480,30 +1479,31 @@ msgstr "选择用户"
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "用户"
|
msgstr "用户"
|
||||||
|
|
||||||
#: perms/forms.py:30 perms/templates/perms/asset_permission_user.html:127
|
#: perms/forms.py:31 perms/templates/perms/asset_permission_user.html:127
|
||||||
msgid "Select user groups"
|
msgid "Select user groups"
|
||||||
msgstr "选择用户组"
|
msgstr "选择用户组"
|
||||||
|
|
||||||
#: perms/forms.py:39 perms/templates/perms/asset_permission_detail.html:144
|
#: perms/forms.py:40 perms/templates/perms/asset_permission_detail.html:144
|
||||||
#: users/forms.py:243
|
#: users/forms.py:243
|
||||||
msgid "Select system users"
|
msgid "Select system users"
|
||||||
msgstr "选择系统用户"
|
msgstr "选择系统用户"
|
||||||
|
|
||||||
#: perms/forms.py:44
|
#: perms/forms.py:52
|
||||||
msgid "User or user group at least one required"
|
msgid "User or group at least one required"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: perms/forms.py:45
|
#: perms/forms.py:60
|
||||||
msgid "Asset or Asset group at least one required"
|
msgid "Asset or group at least one required"
|
||||||
msgstr ""
|
msgstr "资产或组至少需要选择一个"
|
||||||
|
|
||||||
#: perms/forms.py:59
|
#: perms/forms.py:78
|
||||||
msgid "Asset {} not have [{}] system users, please check \n"
|
msgid "Asset {} of cluster {} not have [{}] system users, please check \n"
|
||||||
msgstr ""
|
msgstr "资产 {} 所在集群 {} 不包含系统用户 [{}] 请检查\n"
|
||||||
|
|
||||||
#: perms/forms.py:67
|
#: perms/forms.py:87
|
||||||
msgid "Asset {}: {} not have [{}] system users, please check"
|
msgid ""
|
||||||
msgstr ""
|
"Asset {}(group {}) of cluster {} not have [{}] system users, please check \n"
|
||||||
|
msgstr "资产 {}(组 {}) 所在集群 {} 不包含系统用户 [{}] 请检查\n"
|
||||||
|
|
||||||
#: perms/models.py:16 perms/templates/perms/asset_permission_list.html:27
|
#: perms/models.py:16 perms/templates/perms/asset_permission_list.html:27
|
||||||
#: templates/_nav.html:13 users/models/user.py:38
|
#: templates/_nav.html:13 users/models/user.py:38
|
||||||
|
@ -1740,10 +1740,10 @@ msgstr "任务"
|
||||||
|
|
||||||
#: templates/_nav.html:47 templates/_nav.html:50
|
#: templates/_nav.html:47 templates/_nav.html:50
|
||||||
#: terminal/templates/terminal/session_list.html:74
|
#: terminal/templates/terminal/session_list.html:74
|
||||||
#: terminal/views/command.py:47 terminal/views/session.py:54
|
#: terminal/views/command.py:47 terminal/views/session.py:75
|
||||||
#: terminal/views/session.py:77 terminal/views/session.py:94
|
#: terminal/views/session.py:92 terminal/views/session.py:114
|
||||||
#: terminal/views/session.py:116 terminal/views/terminal.py:31
|
#: terminal/views/terminal.py:31 terminal/views/terminal.py:46
|
||||||
#: terminal/views/terminal.py:46 terminal/views/terminal.py:58
|
#: terminal/views/terminal.py:58
|
||||||
msgid "Terminal"
|
msgid "Terminal"
|
||||||
msgstr "终端"
|
msgstr "终端"
|
||||||
|
|
||||||
|
@ -1882,7 +1882,7 @@ msgid "Goto"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: terminal/templates/terminal/session_detail.html:17
|
#: terminal/templates/terminal/session_detail.html:17
|
||||||
#: terminal/views/session.py:117
|
#: terminal/views/session.py:115
|
||||||
msgid "Session detail"
|
msgid "Session detail"
|
||||||
msgstr "会话详情"
|
msgstr "会话详情"
|
||||||
|
|
||||||
|
@ -1971,14 +1971,14 @@ msgstr "接受终端注册"
|
||||||
msgid "Info"
|
msgid "Info"
|
||||||
msgstr "信息"
|
msgstr "信息"
|
||||||
|
|
||||||
#: terminal/views/session.py:55 terminal/views/session.py:95
|
#: terminal/views/session.py:76
|
||||||
msgid "Session offline list"
|
|
||||||
msgstr "离线会话"
|
|
||||||
|
|
||||||
#: terminal/views/session.py:78
|
|
||||||
msgid "Session online list"
|
msgid "Session online list"
|
||||||
msgstr "在线会话"
|
msgstr "在线会话"
|
||||||
|
|
||||||
|
#: terminal/views/session.py:93
|
||||||
|
msgid "Session offline list"
|
||||||
|
msgstr "离线会话"
|
||||||
|
|
||||||
#: terminal/views/terminal.py:32
|
#: terminal/views/terminal.py:32
|
||||||
msgid "Terminal list"
|
msgid "Terminal list"
|
||||||
msgstr "终端列表"
|
msgstr "终端列表"
|
||||||
|
|
|
@ -15,7 +15,8 @@ class AssetPermissionForm(forms.ModelForm):
|
||||||
widget=forms.SelectMultiple(
|
widget=forms.SelectMultiple(
|
||||||
attrs={'class': 'select2', 'data-placeholder': _('Select users')},
|
attrs={'class': 'select2', 'data-placeholder': _('Select users')},
|
||||||
),
|
),
|
||||||
label=_("User")
|
label=_("User"),
|
||||||
|
required=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -41,35 +42,54 @@ class AssetPermissionForm(forms.ModelForm):
|
||||||
help_texts = {
|
help_texts = {
|
||||||
'name': '* required',
|
'name': '* required',
|
||||||
'system_users': '* required',
|
'system_users': '* required',
|
||||||
'user_groups': _('User or user group at least one required'),
|
|
||||||
'asset_groups': _('Asset or Asset group at least one required'),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def clean_user_groups(self):
|
||||||
|
users = self.cleaned_data.get('users')
|
||||||
|
user_groups = self.cleaned_data.get('user_groups')
|
||||||
|
|
||||||
|
if not users and not user_groups:
|
||||||
|
raise forms.ValidationError(_("User or group at least one required"))
|
||||||
|
return self.cleaned_data["user_groups"]
|
||||||
|
|
||||||
|
def clean_asset_groups(self):
|
||||||
|
assets = self.cleaned_data.get('assets')
|
||||||
|
asset_groups = self.cleaned_data.get('asset_groups')
|
||||||
|
|
||||||
|
if not assets and not asset_groups:
|
||||||
|
raise forms.ValidationError(_("Asset or group at least one required"))
|
||||||
|
|
||||||
|
return self.cleaned_data["asset_groups"]
|
||||||
|
|
||||||
def clean_system_users(self):
|
def clean_system_users(self):
|
||||||
from assets.utils import check_assets_have_system_user
|
from assets.utils import check_assets_have_system_user
|
||||||
|
|
||||||
errors = []
|
errors = []
|
||||||
assets = self.cleaned_data['assets']
|
assets = self.cleaned_data['assets']
|
||||||
asset_groups = self.cleaned_data['asset_groups']
|
asset_groups = self.cleaned_data.get('asset_groups')
|
||||||
system_users = self.cleaned_data['system_users']
|
system_users = self.cleaned_data.get('system_users')
|
||||||
|
|
||||||
|
if not asset_groups and not assets:
|
||||||
|
return self.cleaned_data.get("system_users")
|
||||||
|
|
||||||
error_data = check_assets_have_system_user(assets, system_users)
|
error_data = check_assets_have_system_user(assets, system_users)
|
||||||
if error_data:
|
if error_data:
|
||||||
for asset, system_users in error_data.items():
|
for asset, system_users in error_data.items():
|
||||||
msg = _("Asset {} not have [{}] system users, please check \n")
|
msg = _("Asset {} of cluster {} not have [{}] system users, please check \n")
|
||||||
error = forms.ValidationError(msg.format(
|
error = forms.ValidationError(msg.format(
|
||||||
asset.hostname,
|
asset.hostname,
|
||||||
|
asset.cluster.name,
|
||||||
", ".join(system_user.name for system_user in system_users)
|
", ".join(system_user.name for system_user in system_users)
|
||||||
))
|
))
|
||||||
errors.append(error)
|
errors.append(error)
|
||||||
|
|
||||||
for group in asset_groups:
|
for group in asset_groups:
|
||||||
msg = _("Asset {}: {} not have [{}] system users, please check")
|
msg = _("Asset {}(group {}) of cluster {} not have [{}] system users, please check \n")
|
||||||
assets = group.assets.all()
|
assets = group.assets.all()
|
||||||
error_data = check_assets_have_system_user(assets, system_users)
|
error_data = check_assets_have_system_user(assets, system_users)
|
||||||
for asset, system_users in error_data.items():
|
for asset, system_users in error_data.items():
|
||||||
errors.append(msg.format(
|
errors.append(msg.format(
|
||||||
group.name, asset.hostname,
|
asset.hostname, group.name, asset.cluster.name,
|
||||||
", ".join(system_user.name for system_user in system_users)
|
", ".join(system_user.name for system_user in system_users)
|
||||||
))
|
))
|
||||||
if errors:
|
if errors:
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
<nav class="navbar navbar-static-top white-bg" role="navigation" style="margin-bottom: 0">
|
<nav class="navbar navbar-static-top white-bg" role="navigation" style="margin-bottom: 0">
|
||||||
<div class="navbar-header">
|
<div class="navbar-header">
|
||||||
<a class="navbar-minimalize minimalize-styl-2 btn btn-primary " href="#"><i class="fa fa-bars"></i> </a>
|
<a class="navbar-minimalize minimalize-styl-2 btn btn-primary " href="#"><i class="fa fa-bars"></i> </a>
|
||||||
<form role="search" class="navbar-form-custom" method="get" action="">
|
<!--<form role="search" class="navbar-form-custom" method="get" action="">-->
|
||||||
<div class="form-group">
|
<!--<div class="form-group">-->
|
||||||
<input type="text" placeholder="{% trans 'Search' %}..." class="form-control" name="search" id="top-search">
|
<!--<input type="text" placeholder="{% trans 'Search' %}..." class="form-control" name="search" id="top-search">-->
|
||||||
</div>
|
<!--</div>-->
|
||||||
</form>
|
<!--</form>-->
|
||||||
</div>
|
</div>
|
||||||
<ul class="nav navbar-top-links navbar-right">
|
<ul class="nav navbar-top-links navbar-right">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
@ -165,7 +165,7 @@ class StatusViewSet(viewsets.ModelViewSet):
|
||||||
|
|
||||||
class SessionViewSet(viewsets.ModelViewSet):
|
class SessionViewSet(viewsets.ModelViewSet):
|
||||||
queryset = Session.objects.all()
|
queryset = Session.objects.all()
|
||||||
serializers_class = SessionSerializer
|
serializer_class = SessionSerializer
|
||||||
permission_classes = (IsSuperUserOrAppUser,)
|
permission_classes = (IsSuperUserOrAppUser,)
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
|
|
Loading…
Reference in New Issue