[Bugfix] 修复以下bug

- session时区
- 切换管理和用户页面cookie问题
- 创建权限时验证
- 一些翻译
pull/915/head
ibuler 2018-01-02 19:36:13 +08:00
parent 68ccec6b9c
commit 720dc9ab05
6 changed files with 88 additions and 68 deletions

View File

@ -242,7 +242,6 @@ LOGGING = {
# https://docs.djangoproject.com/en/1.10/topics/i18n/
LANGUAGE_CODE = 'en-us'
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
@ -300,7 +299,8 @@ REST_FRAMEWORK = {
'users.authentication.SessionAuthentication',
),
'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 = [

Binary file not shown.

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Jumpserver 0.3.3\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"
"Last-Translator: ibuler <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-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
msgid "Select asset groups"
msgstr "选择资产组"
@ -43,7 +43,7 @@ msgid "Default using cluster admin user"
msgstr "默认使用管理用户"
#: 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
msgid "Select assets"
msgstr "选择资产"
@ -84,7 +84,7 @@ msgstr "资产"
#: assets/templates/assets/cluster_list.html:19
#: assets/templates/assets/system_user_detail.html:53
#: 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/templates/perms/asset_permission_create_update.html:33
#: perms/templates/perms/asset_permission_detail.html:62
@ -746,7 +746,7 @@ msgstr "不可达"
#: assets/templates/assets/system_user_list.html:31
#: 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/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
#: terminal/templates/terminal/session_list.html:78
#: terminal/templates/terminal/terminal_list.html:36
@ -774,7 +774,7 @@ msgstr "更新"
#: assets/templates/assets/asset_list.html:96
#: assets/templates/assets/cluster_list.html:44
#: 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
#: terminal/templates/terminal/terminal_list.html:73
#: users/templates/users/user_group_list.html:41
@ -1000,7 +1000,6 @@ msgid "Test assets connective"
msgstr "测试资产可连接性"
#: assets/templates/assets/cluster_assets.html:77
#: ops/templates/ops/task_list.html:75
msgid "Run"
msgstr "执行"
@ -1235,7 +1234,7 @@ msgid "Options"
msgstr "选项"
#: 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"
msgstr "主机"
@ -1257,36 +1256,36 @@ msgstr "Become"
msgid "Create by"
msgstr "创建者"
#: ops/models.py:306
#: ops/models.py:307
msgid "Start time"
msgstr "开始时间"
#: ops/models.py:307
#: ops/models.py:308
msgid "End time"
msgstr "完成时间"
#: ops/models.py:308 ops/templates/ops/adhoc_history.html:57
#: ops/templates/ops/task_history.html:60 ops/templates/ops/task_list.html:45
#: ops/models.py:309 ops/templates/ops/adhoc_history.html:57
#: ops/templates/ops/task_history.html:60 ops/templates/ops/task_list.html:40
msgid "Time"
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_detail.html:66
#: ops/templates/ops/task_detail.html:80 ops/templates/ops/task_history.html:58
msgid "Is finished"
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
msgid "Is success"
msgstr "是否成功"
#: ops/models.py:311
#: ops/models.py:312
msgid "Adhoc raw result"
msgstr "结果"
#: ops/models.py:312
#: ops/models.py:313
msgid "Adhoc result summary"
msgstr "汇总"
@ -1296,7 +1295,7 @@ msgid "Version detail"
msgstr "版本详情"
#: 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"
msgstr "执行历史"
@ -1308,7 +1307,7 @@ msgstr "执行历史"
msgid "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"
msgstr "执行次数"
@ -1368,7 +1367,7 @@ msgstr "失败/成功/总"
msgid "Version"
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"
msgstr "执行历史详情"
@ -1394,12 +1393,12 @@ msgid "Success assets"
msgstr "成功资产"
#: 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"
msgstr "任务详情"
#: 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"
msgstr "任务各版本"
@ -1429,7 +1428,7 @@ msgstr "最新版本"
msgid "Contents"
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
#: terminal/templates/terminal/command_list.html:60
#: users/templates/users/login_log_list.html:35
@ -1437,29 +1436,29 @@ msgstr "内容"
msgid "Search"
msgstr "搜索"
#: ops/templates/ops/task_list.html:41
#: ops/templates/ops/task_list.html:36
msgid "Versions"
msgstr "版本"
#: ops/templates/ops/task_list.html:43
#: ops/templates/ops/task_list.html:38
msgid "Success"
msgstr "成功"
#: ops/templates/ops/task_list.html:44
#: ops/templates/ops/task_list.html:39
#: users/templates/users/login_log_list.html:54
msgid "Date"
msgstr "日期"
#: ops/views.py:41 ops/views.py:57 ops/views.py:70 ops/views.py:83
#: ops/views.py:106 ops/views.py:119 ops/views.py:132
#: ops/views.py:35 ops/views.py:51 ops/views.py:64 ops/views.py:77
#: ops/views.py:90 ops/views.py:103 ops/views.py:116
msgid "Ops"
msgstr "作业中心"
#: ops/views.py:42
#: ops/views.py:36
msgid "Task list"
msgstr "任务列表"
#: ops/views.py:84
#: ops/views.py:78
msgid "Task run history"
msgstr "执行历史"
@ -1480,30 +1479,31 @@ msgstr "选择用户"
msgid "User"
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"
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
msgid "Select system users"
msgstr "选择系统用户"
#: perms/forms.py:44
msgid "User or user group at least one required"
#: perms/forms.py:52
msgid "User or group at least one required"
msgstr ""
#: perms/forms.py:45
msgid "Asset or Asset group at least one required"
msgstr ""
#: perms/forms.py:60
msgid "Asset or group at least one required"
msgstr "资产或组至少需要选择一个"
#: perms/forms.py:59
msgid "Asset {} not have [{}] system users, please check \n"
msgstr ""
#: perms/forms.py:78
msgid "Asset {} of cluster {} not have [{}] system users, please check \n"
msgstr "资产 {} 所在集群 {} 不包含系统用户 [{}] 请检查\n"
#: perms/forms.py:67
msgid "Asset {}: {} not have [{}] system users, please check"
msgstr ""
#: perms/forms.py:87
msgid ""
"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
#: templates/_nav.html:13 users/models/user.py:38
@ -1740,10 +1740,10 @@ msgstr "任务"
#: templates/_nav.html:47 templates/_nav.html:50
#: terminal/templates/terminal/session_list.html:74
#: terminal/views/command.py:47 terminal/views/session.py:54
#: terminal/views/session.py:77 terminal/views/session.py:94
#: terminal/views/session.py:116 terminal/views/terminal.py:31
#: terminal/views/terminal.py:46 terminal/views/terminal.py:58
#: terminal/views/command.py:47 terminal/views/session.py:75
#: terminal/views/session.py:92 terminal/views/session.py:114
#: terminal/views/terminal.py:31 terminal/views/terminal.py:46
#: terminal/views/terminal.py:58
msgid "Terminal"
msgstr "终端"
@ -1882,7 +1882,7 @@ msgid "Goto"
msgstr ""
#: terminal/templates/terminal/session_detail.html:17
#: terminal/views/session.py:117
#: terminal/views/session.py:115
msgid "Session detail"
msgstr "会话详情"
@ -1971,14 +1971,14 @@ msgstr "接受终端注册"
msgid "Info"
msgstr "信息"
#: terminal/views/session.py:55 terminal/views/session.py:95
msgid "Session offline list"
msgstr "离线会话"
#: terminal/views/session.py:78
#: terminal/views/session.py:76
msgid "Session online list"
msgstr "在线会话"
#: terminal/views/session.py:93
msgid "Session offline list"
msgstr "离线会话"
#: terminal/views/terminal.py:32
msgid "Terminal list"
msgstr "终端列表"

View File

@ -15,7 +15,8 @@ class AssetPermissionForm(forms.ModelForm):
widget=forms.SelectMultiple(
attrs={'class': 'select2', 'data-placeholder': _('Select users')},
),
label=_("User")
label=_("User"),
required=False,
)
class Meta:
@ -41,35 +42,54 @@ class AssetPermissionForm(forms.ModelForm):
help_texts = {
'name': '* 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):
from assets.utils import check_assets_have_system_user
errors = []
assets = self.cleaned_data['assets']
asset_groups = self.cleaned_data['asset_groups']
system_users = self.cleaned_data['system_users']
asset_groups = self.cleaned_data.get('asset_groups')
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)
if error_data:
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(
asset.hostname,
asset.cluster.name,
", ".join(system_user.name for system_user in system_users)
))
errors.append(error)
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()
error_data = check_assets_have_system_user(assets, system_users)
for asset, system_users in error_data.items():
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)
))
if errors:

View File

@ -3,11 +3,11 @@
<nav class="navbar navbar-static-top white-bg" role="navigation" style="margin-bottom: 0">
<div class="navbar-header">
<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="">
<div class="form-group">
<input type="text" placeholder="{% trans 'Search' %}..." class="form-control" name="search" id="top-search">
</div>
</form>
<!--<form role="search" class="navbar-form-custom" method="get" action="">-->
<!--<div class="form-group">-->
<!--<input type="text" placeholder="{% trans 'Search' %}..." class="form-control" name="search" id="top-search">-->
<!--</div>-->
<!--</form>-->
</div>
<ul class="nav navbar-top-links navbar-right">
<li>

View File

@ -165,7 +165,7 @@ class StatusViewSet(viewsets.ModelViewSet):
class SessionViewSet(viewsets.ModelViewSet):
queryset = Session.objects.all()
serializers_class = SessionSerializer
serializer_class = SessionSerializer
permission_classes = (IsSuperUserOrAppUser,)
def get_queryset(self):