Commit 720dc9ab authored by ibuler's avatar ibuler

[Bugfix] 修复以下bug

- session时区
- 切换管理和用户页面cookie问题
- 创建权限时验证
- 一些翻译
parent 68ccec6b
...@@ -242,7 +242,6 @@ LOGGING = { ...@@ -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 = { ...@@ -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 = [
......
...@@ -8,7 +8,7 @@ msgid "" ...@@ -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 "" ...@@ -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" ...@@ -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 "资产" ...@@ -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 "不可达" ...@@ -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 "更新" ...@@ -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" ...@@ -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" ...@@ -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" ...@@ -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" ...@@ -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 "执行历史" ...@@ -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 "失败/成功/总" ...@@ -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" ...@@ -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 "最新版本" ...@@ -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 "内容" ...@@ -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 "选择用户" ...@@ -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 "任务" ...@@ -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" ...@@ -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 "接受终端注册" ...@@ -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): ...@@ -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): ...@@ -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 @@ ...@@ -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): ...@@ -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):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment