Commit ef717f88 authored by ibuler's avatar ibuler

Merge branch 'dev' into bugfix

parents 3e73dbdb 90890591
...@@ -28,7 +28,7 @@ class RemoteAppListView(PermissionsMixin, TemplateView): ...@@ -28,7 +28,7 @@ class RemoteAppListView(PermissionsMixin, TemplateView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = { context = {
'app': _('Assets'), 'app': _('Applications'),
'action': _('RemoteApp list'), 'action': _('RemoteApp list'),
} }
kwargs.update(context) kwargs.update(context)
...@@ -44,7 +44,7 @@ class RemoteAppCreateView(PermissionsMixin, SuccessMessageMixin, CreateView): ...@@ -44,7 +44,7 @@ class RemoteAppCreateView(PermissionsMixin, SuccessMessageMixin, CreateView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = { context = {
'app': _('Assets'), 'app': _('Applications'),
'action': _('Create RemoteApp'), 'action': _('Create RemoteApp'),
} }
kwargs.update(context) kwargs.update(context)
...@@ -66,7 +66,7 @@ class RemoteAppUpdateView(PermissionsMixin, SuccessMessageMixin, UpdateView): ...@@ -66,7 +66,7 @@ class RemoteAppUpdateView(PermissionsMixin, SuccessMessageMixin, UpdateView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = { context = {
'app': _('Assets'), 'app': _('Applications'),
'action': _('Update RemoteApp'), 'action': _('Update RemoteApp'),
} }
kwargs.update(context) kwargs.update(context)
...@@ -84,7 +84,7 @@ class RemoteAppDetailView(PermissionsMixin, DetailView): ...@@ -84,7 +84,7 @@ class RemoteAppDetailView(PermissionsMixin, DetailView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = { context = {
'app': _('Assets'), 'app': _('Applications'),
'action': _('RemoteApp detail'), 'action': _('RemoteApp detail'),
} }
kwargs.update(context) kwargs.update(context)
......
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
from ..base import BaseBackend from .base import BaseBackend
class VaultBackend(BaseBackend): class VaultBackend(BaseBackend):
@classmethod
def get(cls, username, asset):
pass
@classmethod @classmethod
def filter(cls, username=None, asset=None, latest=True): def filter(cls, username=None, asset=None, latest=True):
pass pass
@classmethod
def create(cls, **kwargs):
pass
...@@ -229,6 +229,8 @@ class Asset(OrgModelMixin): ...@@ -229,6 +229,8 @@ class Asset(OrgModelMixin):
@property @property
def connectivity(self): def connectivity(self):
if not self.admin_user:
return self.UNKNOWN
return self.admin_user.get_connectivity_of(self) return self.admin_user.get_connectivity_of(self)
@connectivity.setter @connectivity.setter
......
...@@ -27,8 +27,6 @@ class ProtocolsRelatedField(serializers.RelatedField): ...@@ -27,8 +27,6 @@ class ProtocolsRelatedField(serializers.RelatedField):
return str(value) return str(value)
def to_internal_value(self, data): def to_internal_value(self, data):
print(data)
print(type(data))
if isinstance(data, dict): if isinstance(data, dict):
return data return data
if '/' not in data: if '/' not in data:
...@@ -152,7 +150,9 @@ class AssetGrantedSerializer(serializers.ModelSerializer): ...@@ -152,7 +150,9 @@ class AssetGrantedSerializer(serializers.ModelSerializer):
""" """
被授权资产的数据结构 被授权资产的数据结构
""" """
protocols = ProtocolSerializer(many=True) protocols = ProtocolsRelatedField(
many=True, queryset=Protocol.objects.all(), label=_("Protocols")
)
system_users_granted = AssetSystemUserSerializer(many=True, read_only=True) system_users_granted = AssetSystemUserSerializer(many=True, read_only=True)
system_users_join = serializers.SerializerMethodField() system_users_join = serializers.SerializerMethodField()
# nodes = NodeTMPSerializer(many=True, read_only=True) # nodes = NodeTMPSerializer(many=True, read_only=True)
...@@ -160,9 +160,9 @@ class AssetGrantedSerializer(serializers.ModelSerializer): ...@@ -160,9 +160,9 @@ class AssetGrantedSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Asset model = Asset
fields = ( fields = (
"id", "hostname", "ip", "protocols", "system_users_granted", "id", "hostname", "ip", "protocol", "port", "protocols",
"is_active", "system_users_join", "os", 'domain', "system_users_granted", "is_active", "system_users_join", "os",
"platform", "comment", "org_id", "org_name", 'domain', "platform", "comment", "org_id", "org_name",
) )
@staticmethod @staticmethod
...@@ -187,8 +187,7 @@ class AssetGrantedSerializer(serializers.ModelSerializer): ...@@ -187,8 +187,7 @@ class AssetGrantedSerializer(serializers.ModelSerializer):
class AssetSimpleSerializer(serializers.ModelSerializer): class AssetSimpleSerializer(serializers.ModelSerializer):
protocols = ProtocolSerializer(many=True)
class Meta: class Meta:
model = Asset model = Asset
fields = ['id', 'hostname', 'ip', 'protocols', 'connectivity', 'port'] fields = ['id', 'hostname', 'ip', 'connectivity', 'port']
...@@ -209,9 +209,13 @@ def test_asset_connectivity_util(assets, task_name=None): ...@@ -209,9 +209,13 @@ def test_asset_connectivity_util(assets, task_name=None):
) )
result = task.run() result = task.run()
summary = result[1] summary = result[1]
results_summary['success'] &= summary['success'] success = summary.get('success', False)
results_summary['contacted'].update(summary['contacted']) contacted = summary.get('contacted', {})
results_summary['dark'].update(summary['dark']) dark = summary.get('dark', {})
results_summary['success'] &= success
results_summary['contacted'].update(contacted)
results_summary['dark'].update(dark)
for asset in assets: for asset in assets:
if asset.hostname in results_summary.get('dark', {}): if asset.hostname in results_summary.get('dark', {}):
...@@ -330,14 +334,17 @@ def test_system_user_connectivity_util(system_user, assets, task_name): ...@@ -330,14 +334,17 @@ def test_system_user_connectivity_util(system_user, assets, task_name):
task, created = update_or_create_ansible_task( task, created = update_or_create_ansible_task(
task_name=task_name, hosts=value['hosts'], tasks=value['tasks'], task_name=task_name, hosts=value['hosts'], tasks=value['tasks'],
pattern='all', options=const.TASK_OPTIONS, pattern='all', options=const.TASK_OPTIONS,
run_as=system_user.username, run_as=system_user.username, created_by=system_user.org_id,
created_by=system_user.org_id,
) )
result = task.run() result = task.run()
summary = result[1] summary = result[1]
results_summary['success'] &= summary['success'] success = summary.get('success', False)
results_summary['contacted'].update(summary['contacted']) contacted = summary.get('contacted', {})
results_summary['dark'].update(summary['dark']) dark = summary.get('dark', {})
results_summary['success'] &= success
results_summary['contacted'].update(contacted)
results_summary['dark'].update(dark)
set_system_user_connectivity_info(system_user, results_summary) set_system_user_connectivity_info(system_user, results_summary)
return results_summary return results_summary
......
...@@ -248,7 +248,7 @@ class CommandExecutionListView(UserCommandExecutionListView): ...@@ -248,7 +248,7 @@ class CommandExecutionListView(UserCommandExecutionListView):
'keyword': self.keyword, 'keyword': self.keyword,
'user_id': self.user_id, 'user_id': self.user_id,
}) })
return super().get_context_data(**context) return context
@method_decorator(csrf_exempt, name='dispatch') @method_decorator(csrf_exempt, name='dispatch')
......
...@@ -224,7 +224,7 @@ class ApiMessageMixin: ...@@ -224,7 +224,7 @@ class ApiMessageMixin:
def dispatch(self, request, *args, **kwargs): def dispatch(self, request, *args, **kwargs):
resp = super().dispatch(request, *args, **kwargs) resp = super().dispatch(request, *args, **kwargs)
if request.method.lower() in ("get", "delete"): if request.method.lower() in ("get", "delete", "patch"):
return resp return resp
if resp.status_code >= 400: if resp.status_code >= 400:
return resp return resp
......
...@@ -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: 2019-06-19 18:16+0800\n" "POT-Creation-Date: 2019-06-20 17:55+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"
...@@ -210,7 +210,7 @@ msgstr "参数" ...@@ -210,7 +210,7 @@ msgstr "参数"
#: assets/models/cluster.py:28 assets/models/cmd_filter.py:25 #: assets/models/cluster.py:28 assets/models/cmd_filter.py:25
#: assets/models/cmd_filter.py:58 assets/models/group.py:21 #: assets/models/cmd_filter.py:58 assets/models/group.py:21
#: assets/templates/assets/admin_user_detail.html:68 #: assets/templates/assets/admin_user_detail.html:68
#: assets/templates/assets/asset_detail.html:129 #: assets/templates/assets/asset_detail.html:128
#: assets/templates/assets/cmd_filter_detail.html:77 #: assets/templates/assets/cmd_filter_detail.html:77
#: assets/templates/assets/domain_detail.html:72 #: assets/templates/assets/domain_detail.html:72
#: assets/templates/assets/system_user_detail.html:100 #: assets/templates/assets/system_user_detail.html:100
...@@ -265,7 +265,7 @@ msgstr "创建日期" ...@@ -265,7 +265,7 @@ msgstr "创建日期"
#: assets/models/domain.py:53 assets/models/group.py:23 #: assets/models/domain.py:53 assets/models/group.py:23
#: assets/models/label.py:23 assets/templates/assets/admin_user_detail.html:72 #: assets/models/label.py:23 assets/templates/assets/admin_user_detail.html:72
#: assets/templates/assets/admin_user_list.html:53 #: assets/templates/assets/admin_user_list.html:53
#: assets/templates/assets/asset_detail.html:137 #: assets/templates/assets/asset_detail.html:136
#: assets/templates/assets/cmd_filter_detail.html:65 #: assets/templates/assets/cmd_filter_detail.html:65
#: assets/templates/assets/cmd_filter_list.html:27 #: assets/templates/assets/cmd_filter_list.html:27
#: assets/templates/assets/cmd_filter_rule_list.html:62 #: assets/templates/assets/cmd_filter_rule_list.html:62
...@@ -305,7 +305,7 @@ msgstr "备注" ...@@ -305,7 +305,7 @@ msgstr "备注"
#: perms/templates/perms/remote_app_permission_list.html:17 #: perms/templates/perms/remote_app_permission_list.html:17
#: perms/templates/perms/remote_app_permission_remote_app.html:26 #: perms/templates/perms/remote_app_permission_remote_app.html:26
#: perms/templates/perms/remote_app_permission_user.html:26 #: perms/templates/perms/remote_app_permission_user.html:26
#: templates/_nav.html:36 templates/_nav.html:48 templates/_nav_user.html:14 #: templates/_nav.html:36 templates/_nav.html:48 templates/_nav_user.html:16
msgid "RemoteApp" msgid "RemoteApp"
msgstr "远程应用" msgstr "远程应用"
...@@ -558,28 +558,9 @@ msgstr "连接" ...@@ -558,28 +558,9 @@ msgstr "连接"
#: applications/views/remote_app.py:31 applications/views/remote_app.py:47 #: applications/views/remote_app.py:31 applications/views/remote_app.py:47
#: applications/views/remote_app.py:69 applications/views/remote_app.py:87 #: applications/views/remote_app.py:69 applications/views/remote_app.py:87
#: assets/models/user.py:135 #: templates/_nav.html:33
#: assets/templates/assets/_asset_group_bulk_update_modal.html:11 msgid "Applications"
#: assets/templates/assets/system_user_asset.html:22 msgstr "应用管理"
#: assets/templates/assets/system_user_detail.html:22
#: assets/views/admin_user.py:30 assets/views/admin_user.py:49
#: assets/views/admin_user.py:66 assets/views/admin_user.py:82
#: assets/views/admin_user.py:107 assets/views/asset.py:52
#: assets/views/asset.py:69 assets/views/asset.py:128 assets/views/asset.py:171
#: assets/views/asset.py:199 assets/views/asset.py:226
#: assets/views/cmd_filter.py:31 assets/views/cmd_filter.py:48
#: assets/views/cmd_filter.py:65 assets/views/cmd_filter.py:82
#: assets/views/cmd_filter.py:102 assets/views/cmd_filter.py:136
#: assets/views/cmd_filter.py:170 assets/views/domain.py:30
#: assets/views/domain.py:47 assets/views/domain.py:64
#: assets/views/domain.py:78 assets/views/domain.py:104
#: assets/views/domain.py:133 assets/views/domain.py:153
#: assets/views/label.py:27 assets/views/label.py:45 assets/views/label.py:72
#: assets/views/system_user.py:29 assets/views/system_user.py:46
#: assets/views/system_user.py:63 assets/views/system_user.py:78
#: templates/_nav.html:19 xpack/plugins/change_auth_plan/models.py:68
msgid "Assets"
msgstr "资产管理"
#: applications/views/remote_app.py:32 #: applications/views/remote_app.py:32
msgid "RemoteApp list" msgid "RemoteApp list"
...@@ -619,8 +600,8 @@ msgid "Test if the assets under the node are connectable: {}" ...@@ -619,8 +600,8 @@ msgid "Test if the assets under the node are connectable: {}"
msgstr "测试节点下资产是否可连接: {}" msgstr "测试节点下资产是否可连接: {}"
#: assets/forms/asset.py:45 assets/models/asset.py:103 #: assets/forms/asset.py:45 assets/models/asset.py:103
#: assets/models/user.py:134 assets/templates/assets/asset_detail.html:195 #: assets/models/user.py:134 assets/templates/assets/asset_detail.html:194
#: assets/templates/assets/asset_detail.html:203 #: assets/templates/assets/asset_detail.html:202
#: assets/templates/assets/system_user_asset.html:83 #: assets/templates/assets/system_user_asset.html:83
#: perms/models/asset_permission.py:38 #: perms/models/asset_permission.py:38
#: xpack/plugins/change_auth_plan/models.py:72 #: xpack/plugins/change_auth_plan/models.py:72
...@@ -629,7 +610,7 @@ msgstr "节点" ...@@ -629,7 +610,7 @@ msgstr "节点"
#: assets/forms/asset.py:48 assets/forms/asset.py:83 assets/models/asset.py:107 #: assets/forms/asset.py:48 assets/forms/asset.py:83 assets/models/asset.py:107
#: assets/models/cluster.py:19 assets/models/user.py:92 #: assets/models/cluster.py:19 assets/models/user.py:92
#: assets/templates/assets/asset_detail.html:81 templates/_nav.html:24 #: assets/templates/assets/asset_detail.html:80 templates/_nav.html:24
#: xpack/plugins/cloud/models.py:124 #: xpack/plugins/cloud/models.py:124
#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:65 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:65
#: xpack/plugins/orgs/templates/orgs/org_list.html:18 #: xpack/plugins/orgs/templates/orgs/org_list.html:18
...@@ -647,7 +628,7 @@ msgstr "标签" ...@@ -647,7 +628,7 @@ msgstr "标签"
#: assets/forms/asset.py:54 assets/forms/asset.py:89 assets/models/asset.py:102 #: assets/forms/asset.py:54 assets/forms/asset.py:89 assets/models/asset.py:102
#: assets/models/domain.py:26 assets/models/domain.py:52 #: assets/models/domain.py:26 assets/models/domain.py:52
#: assets/templates/assets/asset_detail.html:85 #: assets/templates/assets/asset_detail.html:84
#: assets/templates/assets/user_asset_list.html:173 #: assets/templates/assets/user_asset_list.html:173
#: xpack/plugins/orgs/templates/orgs/org_list.html:17 #: xpack/plugins/orgs/templates/orgs/org_list.html:17
msgid "Domain" msgid "Domain"
...@@ -858,14 +839,14 @@ msgstr "主机名" ...@@ -858,14 +839,14 @@ msgstr "主机名"
msgid "Protocol" msgid "Protocol"
msgstr "协议" msgstr "协议"
#: assets/models/asset.py:101 assets/templates/assets/asset_detail.html:109 #: assets/models/asset.py:101 assets/templates/assets/asset_detail.html:108
#: assets/templates/assets/user_asset_list.html:170 #: assets/templates/assets/user_asset_list.html:170
msgid "Platform" msgid "Platform"
msgstr "系统平台" msgstr "系统平台"
#: assets/models/asset.py:104 assets/models/cmd_filter.py:21 #: assets/models/asset.py:104 assets/models/cmd_filter.py:21
#: assets/models/domain.py:54 assets/models/label.py:22 #: assets/models/domain.py:54 assets/models/label.py:22
#: assets/templates/assets/asset_detail.html:117 #: assets/templates/assets/asset_detail.html:116
#: assets/templates/assets/user_asset_list.html:174 #: assets/templates/assets/user_asset_list.html:174
msgid "Is active" msgid "Is active"
msgstr "激活" msgstr "激活"
...@@ -874,19 +855,19 @@ msgstr "激活" ...@@ -874,19 +855,19 @@ msgstr "激活"
msgid "Public IP" msgid "Public IP"
msgstr "公网IP" msgstr "公网IP"
#: assets/models/asset.py:111 assets/templates/assets/asset_detail.html:125 #: assets/models/asset.py:111 assets/templates/assets/asset_detail.html:124
msgid "Asset number" msgid "Asset number"
msgstr "资产编号" msgstr "资产编号"
#: assets/models/asset.py:114 assets/templates/assets/asset_detail.html:89 #: assets/models/asset.py:114 assets/templates/assets/asset_detail.html:88
msgid "Vendor" msgid "Vendor"
msgstr "制造商" msgstr "制造商"
#: assets/models/asset.py:115 assets/templates/assets/asset_detail.html:93 #: assets/models/asset.py:115 assets/templates/assets/asset_detail.html:92
msgid "Model" msgid "Model"
msgstr "型号" msgstr "型号"
#: assets/models/asset.py:116 assets/templates/assets/asset_detail.html:121 #: assets/models/asset.py:116 assets/templates/assets/asset_detail.html:120
msgid "Serial number" msgid "Serial number"
msgstr "序列号" msgstr "序列号"
...@@ -907,7 +888,7 @@ msgstr "CPU核数" ...@@ -907,7 +888,7 @@ msgstr "CPU核数"
msgid "CPU vcpus" msgid "CPU vcpus"
msgstr "CPU总数" msgstr "CPU总数"
#: assets/models/asset.py:122 assets/templates/assets/asset_detail.html:101 #: assets/models/asset.py:122 assets/templates/assets/asset_detail.html:100
msgid "Memory" msgid "Memory"
msgstr "内存" msgstr "内存"
...@@ -919,7 +900,7 @@ msgstr "硬盘大小" ...@@ -919,7 +900,7 @@ msgstr "硬盘大小"
msgid "Disk info" msgid "Disk info"
msgstr "硬盘信息" msgstr "硬盘信息"
#: assets/models/asset.py:126 assets/templates/assets/asset_detail.html:113 #: assets/models/asset.py:126 assets/templates/assets/asset_detail.html:112
#: assets/templates/assets/user_asset_list.html:171 #: assets/templates/assets/user_asset_list.html:171
msgid "OS" msgid "OS"
msgstr "操作系统" msgstr "操作系统"
...@@ -937,7 +918,7 @@ msgid "Hostname raw" ...@@ -937,7 +918,7 @@ msgid "Hostname raw"
msgstr "主机名原始" msgstr "主机名原始"
#: assets/models/asset.py:131 assets/templates/assets/asset_create.html:46 #: assets/models/asset.py:131 assets/templates/assets/asset_create.html:46
#: assets/templates/assets/asset_detail.html:232 templates/_nav.html:26 #: assets/templates/assets/asset_detail.html:231 templates/_nav.html:26
msgid "Labels" msgid "Labels"
msgstr "标签管理" msgstr "标签管理"
...@@ -1182,6 +1163,29 @@ msgstr "自动登录" ...@@ -1182,6 +1163,29 @@ msgstr "自动登录"
msgid "Manually login" msgid "Manually login"
msgstr "手动登录" msgstr "手动登录"
#: assets/models/user.py:135
#: assets/templates/assets/_asset_group_bulk_update_modal.html:11
#: assets/templates/assets/system_user_asset.html:22
#: assets/templates/assets/system_user_detail.html:22
#: assets/views/admin_user.py:30 assets/views/admin_user.py:49
#: assets/views/admin_user.py:66 assets/views/admin_user.py:82
#: assets/views/admin_user.py:107 assets/views/asset.py:52
#: assets/views/asset.py:69 assets/views/asset.py:128 assets/views/asset.py:171
#: assets/views/asset.py:199 assets/views/asset.py:226
#: assets/views/cmd_filter.py:31 assets/views/cmd_filter.py:48
#: assets/views/cmd_filter.py:65 assets/views/cmd_filter.py:82
#: assets/views/cmd_filter.py:102 assets/views/cmd_filter.py:136
#: assets/views/cmd_filter.py:170 assets/views/domain.py:30
#: assets/views/domain.py:47 assets/views/domain.py:64
#: assets/views/domain.py:78 assets/views/domain.py:104
#: assets/views/domain.py:133 assets/views/domain.py:153
#: assets/views/label.py:27 assets/views/label.py:45 assets/views/label.py:72
#: assets/views/system_user.py:29 assets/views/system_user.py:46
#: assets/views/system_user.py:63 assets/views/system_user.py:78
#: templates/_nav.html:19 xpack/plugins/change_auth_plan/models.py:68
msgid "Assets"
msgstr "资产管理"
#: assets/models/user.py:138 assets/templates/assets/_system_user.html:59 #: assets/models/user.py:138 assets/templates/assets/_system_user.html:59
#: assets/templates/assets/system_user_detail.html:122 #: assets/templates/assets/system_user_detail.html:122
#: assets/templates/assets/system_user_update.html:10 #: assets/templates/assets/system_user_update.html:10
...@@ -1206,24 +1210,24 @@ msgstr "登录模式" ...@@ -1206,24 +1210,24 @@ msgstr "登录模式"
msgid "%(value)s is not an even number" msgid "%(value)s is not an even number"
msgstr "%(value)s is not an even number" msgstr "%(value)s is not an even number"
#: assets/serializers/asset.py:26 assets/templates/assets/asset_create.html:24 #: assets/serializers/asset.py:46 assets/templates/assets/asset_create.html:24
msgid "Protocols" msgid "Protocols"
msgstr "协议组" msgstr "协议组"
#: assets/serializers/asset.py:52 #: assets/serializers/asset.py:73
msgid "Hardware info" msgid "Hardware info"
msgstr "硬件信息" msgstr "硬件信息"
#: assets/serializers/asset.py:53 assets/serializers/asset_user.py:29 #: assets/serializers/asset.py:74 assets/serializers/asset_user.py:29
#: assets/templates/assets/_asset_user_list.html:18 #: assets/templates/assets/_asset_user_list.html:18
msgid "Connectivity" msgid "Connectivity"
msgstr "连接" msgstr "连接"
#: assets/serializers/asset.py:54 orgs/mixins.py:223 #: assets/serializers/asset.py:75 orgs/mixins.py:223
msgid "Org name" msgid "Org name"
msgstr "组织名称" msgstr "组织名称"
#: assets/serializers/asset.py:70 #: assets/serializers/asset.py:93
msgid "Protocol duplicate: {}" msgid "Protocol duplicate: {}"
msgstr "协议重复: {}" msgstr "协议重复: {}"
...@@ -1400,7 +1404,7 @@ msgid "Please input password" ...@@ -1400,7 +1404,7 @@ msgid "Please input password"
msgstr "请输入密码" msgstr "请输入密码"
#: assets/templates/assets/_asset_user_auth_update_modal.html:68 #: assets/templates/assets/_asset_user_auth_update_modal.html:68
#: assets/templates/assets/asset_detail.html:312 #: assets/templates/assets/asset_detail.html:311
#: users/templates/users/user_detail.html:307 #: users/templates/users/user_detail.html:307
#: users/templates/users/user_detail.html:334 #: users/templates/users/user_detail.html:334
#: xpack/plugins/interface/views.py:35 #: xpack/plugins/interface/views.py:35
...@@ -1437,15 +1441,13 @@ msgid "Datetime" ...@@ -1437,15 +1441,13 @@ msgid "Datetime"
msgstr "日期" msgstr "日期"
#: assets/templates/assets/_asset_user_list.html:61 #: assets/templates/assets/_asset_user_list.html:61
#, fuzzy
#| msgid "View auth"
msgid "View" msgid "View"
msgstr "查看认证" msgstr "查看"
#: assets/templates/assets/_asset_user_list.html:63 #: assets/templates/assets/_asset_user_list.html:63
#: assets/templates/assets/admin_user_assets.html:61 #: assets/templates/assets/admin_user_assets.html:61
#: assets/templates/assets/asset_asset_user_list.html:57 #: assets/templates/assets/asset_asset_user_list.html:57
#: assets/templates/assets/asset_detail.html:183 #: assets/templates/assets/asset_detail.html:182
#: assets/templates/assets/system_user_asset.html:63 #: assets/templates/assets/system_user_asset.html:63
#: assets/templates/assets/system_user_detail.html:151 #: assets/templates/assets/system_user_detail.html:151
msgid "Test" msgid "Test"
...@@ -1535,7 +1537,7 @@ msgstr "快速更新" ...@@ -1535,7 +1537,7 @@ msgstr "快速更新"
#: assets/templates/assets/admin_user_assets.html:58 #: assets/templates/assets/admin_user_assets.html:58
#: assets/templates/assets/asset_asset_user_list.html:54 #: assets/templates/assets/asset_asset_user_list.html:54
#: assets/templates/assets/asset_detail.html:180 #: assets/templates/assets/asset_detail.html:179
msgid "Test connective" msgid "Test connective"
msgstr "测试可连接性" msgstr "测试可连接性"
...@@ -1551,7 +1553,7 @@ msgid "Select nodes" ...@@ -1551,7 +1553,7 @@ msgid "Select nodes"
msgstr "选择节点" msgstr "选择节点"
#: assets/templates/assets/admin_user_detail.html:100 #: assets/templates/assets/admin_user_detail.html:100
#: assets/templates/assets/asset_detail.html:212 #: assets/templates/assets/asset_detail.html:211
#: assets/templates/assets/asset_list.html:682 #: assets/templates/assets/asset_list.html:682
#: assets/templates/assets/cmd_filter_detail.html:106 #: assets/templates/assets/cmd_filter_detail.html:106
#: assets/templates/assets/system_user_asset.html:100 #: assets/templates/assets/system_user_asset.html:100
...@@ -1649,7 +1651,7 @@ msgid "Asset users of" ...@@ -1649,7 +1651,7 @@ msgid "Asset users of"
msgstr "资产用户" msgstr "资产用户"
#: assets/templates/assets/asset_asset_user_list.html:47 #: assets/templates/assets/asset_asset_user_list.html:47
#: assets/templates/assets/asset_detail.html:149 #: assets/templates/assets/asset_detail.html:148
#: terminal/templates/terminal/session_detail.html:81 #: terminal/templates/terminal/session_detail.html:81
#: users/templates/users/user_detail.html:138 #: users/templates/users/user_detail.html:138
#: users/templates/users/user_profile.html:146 #: users/templates/users/user_profile.html:146
...@@ -1668,21 +1670,21 @@ msgstr "选择需要修改属性" ...@@ -1668,21 +1670,21 @@ msgstr "选择需要修改属性"
msgid "Select all" msgid "Select all"
msgstr "全选" msgstr "全选"
#: assets/templates/assets/asset_detail.html:97 #: assets/templates/assets/asset_detail.html:96
msgid "CPU" msgid "CPU"
msgstr "CPU" msgstr "CPU"
#: assets/templates/assets/asset_detail.html:105 #: assets/templates/assets/asset_detail.html:104
msgid "Disk" msgid "Disk"
msgstr "硬盘" msgstr "硬盘"
#: assets/templates/assets/asset_detail.html:133 #: assets/templates/assets/asset_detail.html:132
#: users/templates/users/user_detail.html:115 #: users/templates/users/user_detail.html:115
#: users/templates/users/user_profile.html:104 #: users/templates/users/user_profile.html:104
msgid "Date joined" msgid "Date joined"
msgstr "创建日期" msgstr "创建日期"
#: assets/templates/assets/asset_detail.html:155 #: assets/templates/assets/asset_detail.html:154
#: assets/templates/assets/user_asset_list.html:46 #: assets/templates/assets/user_asset_list.html:46
#: perms/models/asset_permission.py:60 perms/models/base.py:38 #: perms/models/asset_permission.py:60 perms/models/base.py:38
#: perms/templates/perms/asset_permission_create_update.html:55 #: perms/templates/perms/asset_permission_create_update.html:55
...@@ -1698,11 +1700,11 @@ msgstr "创建日期" ...@@ -1698,11 +1700,11 @@ msgstr "创建日期"
msgid "Active" msgid "Active"
msgstr "激活中" msgstr "激活中"
#: assets/templates/assets/asset_detail.html:172 #: assets/templates/assets/asset_detail.html:171
msgid "Refresh hardware" msgid "Refresh hardware"
msgstr "更新硬件信息" msgstr "更新硬件信息"
#: assets/templates/assets/asset_detail.html:175 #: assets/templates/assets/asset_detail.html:174
msgid "Refresh" msgid "Refresh"
msgstr "刷新" msgstr "刷新"
...@@ -2319,8 +2321,8 @@ msgid "Date" ...@@ -2319,8 +2321,8 @@ msgid "Date"
msgstr "日期" msgstr "日期"
#: audits/views.py:85 audits/views.py:129 audits/views.py:166 #: audits/views.py:85 audits/views.py:129 audits/views.py:166
#: audits/views.py:211 audits/views.py:243 templates/_nav.html:87 #: audits/views.py:211 audits/views.py:243 ops/views/command.py:47
#: templates/_nav_audits.html:22 #: templates/_nav.html:87 templates/_nav_audits.html:22
msgid "Audits" msgid "Audits"
msgstr "日志审计" msgstr "日志审计"
...@@ -2986,7 +2988,7 @@ msgstr "更新任务内容: {}" ...@@ -2986,7 +2988,7 @@ msgstr "更新任务内容: {}"
#: ops/views/adhoc.py:45 ops/views/adhoc.py:71 ops/views/adhoc.py:85 #: ops/views/adhoc.py:45 ops/views/adhoc.py:71 ops/views/adhoc.py:85
#: ops/views/adhoc.py:99 ops/views/adhoc.py:113 ops/views/adhoc.py:127 #: ops/views/adhoc.py:99 ops/views/adhoc.py:113 ops/views/adhoc.py:127
#: ops/views/adhoc.py:141 ops/views/command.py:47 ops/views/command.py:72 #: ops/views/adhoc.py:141 ops/views/command.py:72
msgid "Ops" msgid "Ops"
msgstr "作业中心" msgstr "作业中心"
...@@ -3002,7 +3004,7 @@ msgstr "执行历史" ...@@ -3002,7 +3004,7 @@ msgstr "执行历史"
msgid "Command execution list" msgid "Command execution list"
msgstr "命令执行列表" msgstr "命令执行列表"
#: ops/views/command.py:73 templates/_nav_user.html:22 #: ops/views/command.py:73 templates/_nav_user.html:26
msgid "Command execution" msgid "Command execution"
msgstr "命令执行" msgstr "命令执行"
...@@ -3827,7 +3829,7 @@ msgstr "文档" ...@@ -3827,7 +3829,7 @@ msgstr "文档"
msgid "Commercial support" msgid "Commercial support"
msgstr "商业支持" msgstr "商业支持"
#: templates/_header_bar.html:89 templates/_nav_user.html:28 users/forms.py:139 #: templates/_header_bar.html:89 templates/_nav_user.html:32 users/forms.py:139
#: users/templates/users/_user.html:43 #: users/templates/users/_user.html:43
#: users/templates/users/first_login.html:39 #: users/templates/users/first_login.html:39
#: users/templates/users/user_password_update.html:40 #: users/templates/users/user_password_update.html:40
...@@ -3943,11 +3945,11 @@ msgstr "用户列表" ...@@ -3943,11 +3945,11 @@ msgstr "用户列表"
msgid "Command filters" msgid "Command filters"
msgstr "命令过滤" msgstr "命令过滤"
#: templates/_nav.html:33
msgid "Applications"
msgstr "应用管理"
#: templates/_nav.html:55 templates/_nav_audits.html:11 #: templates/_nav.html:55 templates/_nav_audits.html:11
#: terminal/views/command.py:51 terminal/views/session.py:74
#: terminal/views/session.py:92 terminal/views/session.py:116
#: terminal/views/terminal.py:31 terminal/views/terminal.py:47
#: terminal/views/terminal.py:60
msgid "Sessions" msgid "Sessions"
msgstr "会话管理" msgstr "会话管理"
...@@ -3956,6 +3958,7 @@ msgid "Session online" ...@@ -3956,6 +3958,7 @@ msgid "Session online"
msgstr "在线会话" msgstr "在线会话"
#: templates/_nav.html:59 templates/_nav_audits.html:15 #: templates/_nav.html:59 templates/_nav_audits.html:15
#: terminal/views/session.py:93
msgid "Session offline" msgid "Session offline"
msgstr "历史会话" msgstr "历史会话"
...@@ -3963,18 +3966,15 @@ msgstr "历史会话" ...@@ -3963,18 +3966,15 @@ msgstr "历史会话"
msgid "Commands" msgid "Commands"
msgstr "命令记录" msgstr "命令记录"
#: templates/_nav.html:63 templates/_nav_user.html:33 #: templates/_nav.html:63 templates/_nav_user.html:37
msgid "Web terminal" msgid "Web terminal"
msgstr "Web终端" msgstr "Web终端"
#: templates/_nav.html:68 templates/_nav_user.html:38 #: templates/_nav.html:68 templates/_nav_user.html:42
msgid "File manager" msgid "File manager"
msgstr "文件管理" msgstr "文件管理"
#: templates/_nav.html:72 terminal/views/command.py:51 #: templates/_nav.html:72
#: terminal/views/session.py:74 terminal/views/session.py:92
#: terminal/views/session.py:116 terminal/views/terminal.py:31
#: terminal/views/terminal.py:47 terminal/views/terminal.py:60
msgid "Terminal" msgid "Terminal"
msgstr "终端管理" msgstr "终端管理"
...@@ -3998,7 +3998,7 @@ msgstr "账户列表" ...@@ -3998,7 +3998,7 @@ msgstr "账户列表"
msgid "Sync instance" msgid "Sync instance"
msgstr "同步实例" msgstr "同步实例"
#: templates/_nav_user.html:9 #: templates/_nav_user.html:11
msgid "My Applications" msgid "My Applications"
msgstr "我的应用" msgstr "我的应用"
...@@ -4356,10 +4356,6 @@ msgstr "信息" ...@@ -4356,10 +4356,6 @@ msgstr "信息"
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 "终端列表"
...@@ -5401,8 +5397,6 @@ msgid "Password rules" ...@@ -5401,8 +5397,6 @@ msgid "Password rules"
msgstr "密码规则" msgstr "密码规则"
#: xpack/plugins/change_auth_plan/models.py:213 #: xpack/plugins/change_auth_plan/models.py:213
#, fuzzy
#| msgid "For security, do not change root user's password"
msgid "For security, do not change {} user's password" msgid "For security, do not change {} user's password"
msgstr "为了安全,禁止更改 {} 用户的密码" msgstr "为了安全,禁止更改 {} 用户的密码"
...@@ -5774,7 +5768,7 @@ msgid "Interface settings" ...@@ -5774,7 +5768,7 @@ msgid "Interface settings"
msgstr "界面设置" msgstr "界面设置"
#: xpack/plugins/interface/templates/interface/interface.html:15 #: xpack/plugins/interface/templates/interface/interface.html:15
#: xpack/plugins/interface/views.py:25 #: xpack/plugins/interface/views.py:24 xpack/plugins/interface/views.py:25
msgid "Interface setting" msgid "Interface setting"
msgstr "界面设置" msgstr "界面设置"
...@@ -5797,10 +5791,6 @@ msgstr "恢复默认成功!" ...@@ -5797,10 +5791,6 @@ msgstr "恢复默认成功!"
msgid "Restore default failed." msgid "Restore default failed."
msgstr "恢复默认失败!" msgstr "恢复默认失败!"
#: xpack/plugins/interface/views.py:24
msgid "Interface"
msgstr "界面"
#: xpack/plugins/interface/views.py:51 #: xpack/plugins/interface/views.py:51
msgid "It is already in the default setting state!" msgid "It is already in the default setting state!"
msgstr "当前已经是初始化状态!" msgstr "当前已经是初始化状态!"
...@@ -5904,7 +5894,9 @@ msgstr "无效的许可证" ...@@ -5904,7 +5894,9 @@ msgstr "无效的许可证"
msgid "Admin" msgid "Admin"
msgstr "管理员" msgstr "管理员"
#: xpack/plugins/orgs/meta.py:8 #: xpack/plugins/orgs/meta.py:8 xpack/plugins/orgs/views.py:26
#: xpack/plugins/orgs/views.py:43 xpack/plugins/orgs/views.py:60
#: xpack/plugins/orgs/views.py:77
msgid "Organizations" msgid "Organizations"
msgstr "组织管理" msgstr "组织管理"
...@@ -5921,19 +5913,10 @@ msgstr "添加管理员" ...@@ -5921,19 +5913,10 @@ msgstr "添加管理员"
msgid "Create organization " msgid "Create organization "
msgstr "创建组织" msgstr "创建组织"
#: xpack/plugins/orgs/views.py:26
msgid "Org"
msgstr "组织"
#: xpack/plugins/orgs/views.py:27 #: xpack/plugins/orgs/views.py:27
msgid "Org list" msgid "Org list"
msgstr "组织列表" msgstr "组织列表"
#: xpack/plugins/orgs/views.py:43 xpack/plugins/orgs/views.py:60
#: xpack/plugins/orgs/views.py:77
msgid "Orgs"
msgstr "组织"
#: xpack/plugins/orgs/views.py:44 #: xpack/plugins/orgs/views.py:44
msgid "Create org" msgid "Create org"
msgstr "创建组织" msgstr "创建组织"
...@@ -5942,8 +5925,8 @@ msgstr "创建组织" ...@@ -5942,8 +5925,8 @@ msgstr "创建组织"
msgid "Update org" msgid "Update org"
msgstr "更新组织" msgstr "更新组织"
#: xpack/plugins/vault/meta.py:11 xpack/plugins/vault/views.py:23 #: xpack/plugins/vault/meta.py:11 xpack/plugins/vault/views.py:22
#: xpack/plugins/vault/views.py:38 #: xpack/plugins/vault/views.py:37
msgid "Vault" msgid "Vault"
msgstr "密码匣子" msgstr "密码匣子"
...@@ -5951,23 +5934,14 @@ msgstr "密码匣子" ...@@ -5951,23 +5934,14 @@ msgstr "密码匣子"
msgid "Import vault" msgid "Import vault"
msgstr "导入密码" msgstr "导入密码"
#: xpack/plugins/vault/views.py:24 #: xpack/plugins/vault/views.py:23
msgid "vault list" msgid "vault list"
msgstr "密码匣子" msgstr "密码匣子"
#: xpack/plugins/vault/views.py:39 #: xpack/plugins/vault/views.py:38
msgid "vault create" msgid "vault create"
msgstr "创建" msgstr "创建"
#~ msgid "Update failed!"
#~ msgstr "更新失败"
#~ msgid "Update auth"
#~ msgstr "更新认证"
#~ msgid "Password version"
#~ msgstr "密码版本"
#~ msgid "User does not exist" #~ msgid "User does not exist"
#~ msgstr "用户不存在" #~ msgstr "用户不存在"
......
...@@ -8,7 +8,7 @@ msgid "" ...@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-27 15:53+0800\n" "POT-Creation-Date: 2019-06-20 16:30+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
...@@ -17,58 +17,58 @@ msgstr "" ...@@ -17,58 +17,58 @@ 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"
#: static/js/jumpserver.js:249 #: static/js/jumpserver.js:263
msgid "Update is successful!" msgid "Update is successful!"
msgstr "更新成功" msgstr "更新成功"
#: static/js/jumpserver.js:251 #: static/js/jumpserver.js:265
msgid "An unknown error occurred while updating.." msgid "An unknown error occurred while updating.."
msgstr "更新时发生未知错误" msgstr "更新时发生未知错误"
#: static/js/jumpserver.js:315 static/js/jumpserver.js:352 #: static/js/jumpserver.js:329 static/js/jumpserver.js:366
#: static/js/jumpserver.js:355 #: static/js/jumpserver.js:369
msgid "Error" msgid "Error"
msgstr "错误" msgstr "错误"
#: static/js/jumpserver.js:315 #: static/js/jumpserver.js:329
msgid "Being used by the asset, please unbind the asset first." msgid "Being used by the asset, please unbind the asset first."
msgstr "正在被资产使用中,请先解除资产绑定" msgstr "正在被资产使用中,请先解除资产绑定"
#: static/js/jumpserver.js:321 static/js/jumpserver.js:362 #: static/js/jumpserver.js:335 static/js/jumpserver.js:376
msgid "Delete the success" msgid "Delete the success"
msgstr "删除成功" msgstr "删除成功"
#: static/js/jumpserver.js:327 #: static/js/jumpserver.js:341
msgid "Are you sure about deleting it?" msgid "Are you sure about deleting it?"
msgstr "你确定删除吗 ?" msgstr "你确定删除吗 ?"
#: static/js/jumpserver.js:331 static/js/jumpserver.js:372 #: static/js/jumpserver.js:345 static/js/jumpserver.js:386
msgid "Cancel" msgid "Cancel"
msgstr "取消" msgstr "取消"
#: static/js/jumpserver.js:333 static/js/jumpserver.js:374 #: static/js/jumpserver.js:347 static/js/jumpserver.js:388
msgid "Confirm" msgid "Confirm"
msgstr "确认" msgstr "确认"
#: static/js/jumpserver.js:352 #: static/js/jumpserver.js:366
msgid "" msgid ""
"The organization contains undeleted information. Please try again after " "The organization contains undeleted information. Please try again after "
"deleting" "deleting"
msgstr "组织中包含未删除信息,请删除后重试" msgstr "组织中包含未删除信息,请删除后重试"
#: static/js/jumpserver.js:355 #: static/js/jumpserver.js:369
msgid "" msgid ""
"Do not perform this operation under this organization. Try again after " "Do not perform this operation under this organization. Try again after "
"switching to another organization" "switching to another organization"
msgstr "请勿在此组织下执行此操作,切换到其他组织后重试" msgstr "请勿在此组织下执行此操作,切换到其他组织后重试"
#: static/js/jumpserver.js:368 #: static/js/jumpserver.js:382
msgid "" msgid ""
"Please ensure that the following information in the organization has been " "Please ensure that the following information in the organization has been "
"deleted" "deleted"
msgstr "请确保组织内的以下信息已删除" msgstr "请确保组织内的以下信息已删除"
#: static/js/jumpserver.js:369 #: static/js/jumpserver.js:383
msgid "" msgid ""
"User list、User group、Asset list、Domain list、Admin user、System user、" "User list、User group、Asset list、Domain list、Admin user、System user、"
"Labels、Asset permission" "Labels、Asset permission"
...@@ -76,76 +76,80 @@ msgstr "" ...@@ -76,76 +76,80 @@ msgstr ""
"用户列表、用户组、资产列表、网域列表、管理用户、系统用户、标签管理、资产授权" "用户列表、用户组、资产列表、网域列表、管理用户、系统用户、标签管理、资产授权"
"规则" "规则"
#: static/js/jumpserver.js:408 #: static/js/jumpserver.js:422
msgid "Loading ..." msgid "Loading ..."
msgstr "加载中 ..." msgstr "加载中 ..."
#: static/js/jumpserver.js:409 #: static/js/jumpserver.js:423
msgid "Search" msgid "Search"
msgstr "搜索" msgstr "搜索"
#: static/js/jumpserver.js:412 #: static/js/jumpserver.js:426
#, javascript-format #, javascript-format
msgid "Selected item %d" msgid "Selected item %d"
msgstr "选中 %d 项" msgstr "选中 %d 项"
#: static/js/jumpserver.js:416 #: static/js/jumpserver.js:430
msgid "Per page _MENU_" msgid "Per page _MENU_"
msgstr "每页 _MENU_" msgstr "每页 _MENU_"
#: static/js/jumpserver.js:417 #: static/js/jumpserver.js:431
msgid "" msgid ""
"Displays the results of items _START_ to _END_; A total of _TOTAL_ entries" "Displays the results of items _START_ to _END_; A total of _TOTAL_ entries"
msgstr "显示第 _START_ 至 _END_ 项结果; 总共 _TOTAL_ 项" msgstr "显示第 _START_ 至 _END_ 项结果; 总共 _TOTAL_ 项"
#: static/js/jumpserver.js:420 #: static/js/jumpserver.js:434
msgid "No match" msgid "No match"
msgstr "没有匹配项" msgstr "没有匹配项"
#: static/js/jumpserver.js:421 #: static/js/jumpserver.js:435
msgid "No record" msgid "No record"
msgstr "没有记录" msgstr "没有记录"
#: static/js/jumpserver.js:563 #: static/js/jumpserver.js:577
msgid "Unknown error occur" msgid "Unknown error occur"
msgstr "" msgstr ""
#: static/js/jumpserver.js:800 #: static/js/jumpserver.js:816
msgid "Password minimum length {N} bits" msgid "Password minimum length {N} bits"
msgstr "密码最小长度 {N} 位" msgstr "密码最小长度 {N} 位"
#: static/js/jumpserver.js:801 #: static/js/jumpserver.js:817
msgid "Must contain capital letters" msgid "Must contain capital letters"
msgstr "必须包含大写字母" msgstr "必须包含大写字母"
#: static/js/jumpserver.js:802 #: static/js/jumpserver.js:818
msgid "Must contain lowercase letters" msgid "Must contain lowercase letters"
msgstr "必须包含小写字母" msgstr "必须包含小写字母"
#: static/js/jumpserver.js:803 #: static/js/jumpserver.js:819
msgid "Must contain numeric characters" msgid "Must contain numeric characters"
msgstr "必须包含数字字符" msgstr "必须包含数字字符"
#: static/js/jumpserver.js:804 #: static/js/jumpserver.js:820
msgid "Must contain special characters" msgid "Must contain special characters"
msgstr "必须包含特殊字符" msgstr "必须包含特殊字符"
#: static/js/jumpserver.js:976 #: static/js/jumpserver.js:995
msgid "Export failed" msgid "Export failed"
msgstr "导出失败" msgstr "导出失败"
#: static/js/jumpserver.js:993 #: static/js/jumpserver.js:1012
msgid "Import Success" msgid "Import Success"
msgstr "导入成功" msgstr "导入成功"
#: static/js/jumpserver.js:998 #: static/js/jumpserver.js:1017
msgid "Update Success" msgid "Update Success"
msgstr "更新成功" msgstr "更新成功"
#: static/js/jumpserver.js:1028 #: static/js/jumpserver.js:1018
msgid "Count"
msgstr "数量"
#: static/js/jumpserver.js:1047
msgid "Import failed" msgid "Import failed"
msgstr "导入失败" msgstr "导入失败"
#: static/js/jumpserver.js:1033 #: static/js/jumpserver.js:1052
msgid "Update failed" msgid "Update failed"
msgstr "更新失败" msgstr "更新失败"
# ~*~ coding: utf-8 ~*~ # ~*~ coding: utf-8 ~*~
# #
from orgs.utils import set_to_root_org from orgs.utils import set_to_root_org
__all__ = [ __all__ = [
...@@ -116,4 +115,3 @@ class ChangeOrgIfNeedMixin(object): ...@@ -116,4 +115,3 @@ class ChangeOrgIfNeedMixin(object):
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
self.change_org_if_need(request, kwargs) self.change_org_if_need(request, kwargs)
return super().get(request, *args, **kwargs) return super().get(request, *args, **kwargs)
...@@ -39,7 +39,7 @@ class MailTestingAPI(APIView): ...@@ -39,7 +39,7 @@ class MailTestingAPI(APIView):
subject = "Test" subject = "Test"
message = "Test smtp setting" message = "Test smtp setting"
email_from = email_from or email_host_user email_from = email_from or email_host_user
send_mail(subject, message, email_from, [email_host_user]) send_mail(subject, message, email_from, [email_from])
except Exception as e: except Exception as e:
return Response({"error": str(e)}, status=401) return Response({"error": str(e)}, status=401)
......
...@@ -1015,7 +1015,7 @@ function APIImportData(props){ ...@@ -1015,7 +1015,7 @@ function APIImportData(props){
$('#updated_failed').html(''); $('#updated_failed').html('');
$('#updated_failed_detail').html(''); $('#updated_failed_detail').html('');
$('#success_updated').html(gettext("Update Success")); $('#success_updated').html(gettext("Update Success"));
$('#success_updated_detail').html("Count" + ": " + data.length); $('#success_updated_detail').html(gettext("Count") + ": " + data.length);
} }
props.data_table.ajax.reload() props.data_table.ajax.reload()
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
<i class="fa fa-files-o" style="width: 14px"></i><span class="nav-label">{% trans 'My assets' %}</span><span class="label label-info pull-right"></span> <i class="fa fa-files-o" style="width: 14px"></i><span class="nav-label">{% trans 'My assets' %}</span><span class="label label-info pull-right"></span>
</a> </a>
</li> </li>
{% if LICENSE_VALID %}
<li id="applications"> <li id="applications">
<a> <a>
<i class="fa fa-th" style="width: 14px"></i> <span class="nav-label">{% trans 'My Applications' %}</span><span class="fa arrow"></span> <i class="fa fa-th" style="width: 14px"></i> <span class="nav-label">{% trans 'My Applications' %}</span><span class="fa arrow"></span>
...@@ -16,6 +18,8 @@ ...@@ -16,6 +18,8 @@
</li> </li>
</ul> </ul>
</li> </li>
{% endif %}
{% if SECURITY_COMMAND_EXECUTION %} {% if SECURITY_COMMAND_EXECUTION %}
<li id="ops"> <li id="ops">
<a href="{% url 'ops:command-execution-start' %}"> <a href="{% url 'ops:command-execution-start' %}">
......
...@@ -48,7 +48,7 @@ class CommandListView(DatetimeSearchMixin, PermissionsMixin, ListView): ...@@ -48,7 +48,7 @@ class CommandListView(DatetimeSearchMixin, PermissionsMixin, ListView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = { context = {
'app': _('Terminal'), 'app': _('Sessions'),
'action': _('Command list'), 'action': _('Command list'),
'user_list': utils.get_session_user_list(), 'user_list': utils.get_session_user_list(),
'asset_list': utils.get_session_asset_list(), 'asset_list': utils.get_session_asset_list(),
......
...@@ -71,7 +71,7 @@ class SessionOnlineListView(SessionListView): ...@@ -71,7 +71,7 @@ class SessionOnlineListView(SessionListView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = { context = {
'app': _('Terminal'), 'app': _('Sessions'),
'action': _('Session online list'), 'action': _('Session online list'),
'type': 'online', 'type': 'online',
'now': timezone.now(), 'now': timezone.now(),
...@@ -89,8 +89,8 @@ class SessionOfflineListView(SessionListView): ...@@ -89,8 +89,8 @@ class SessionOfflineListView(SessionListView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = { context = {
'app': _('Terminal'), 'app': _('Sessions'),
'action': _('Session offline list'), 'action': _('Session offline'),
'now': timezone.now(), 'now': timezone.now(),
} }
kwargs.update(context) kwargs.update(context)
...@@ -113,7 +113,7 @@ class SessionDetailView(SingleObjectMixin, PermissionsMixin, ListView): ...@@ -113,7 +113,7 @@ class SessionDetailView(SingleObjectMixin, PermissionsMixin, ListView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = { context = {
'app': _('Terminal'), 'app': _('Sessions'),
'action': _('Session detail'), 'action': _('Session detail'),
} }
kwargs.update(context) kwargs.update(context)
......
...@@ -28,7 +28,7 @@ class TerminalListView(PermissionsMixin, ListView): ...@@ -28,7 +28,7 @@ class TerminalListView(PermissionsMixin, ListView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(TerminalListView, self).get_context_data(**kwargs) context = super(TerminalListView, self).get_context_data(**kwargs)
context.update({ context.update({
'app': _('Terminal'), 'app': _('Sessions'),
'action': _('Terminal list'), 'action': _('Terminal list'),
'form': self.form_class() 'form': self.form_class()
}) })
...@@ -44,7 +44,7 @@ class TerminalUpdateView(PermissionsMixin, UpdateView): ...@@ -44,7 +44,7 @@ class TerminalUpdateView(PermissionsMixin, UpdateView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(TerminalUpdateView, self).get_context_data(**kwargs) context = super(TerminalUpdateView, self).get_context_data(**kwargs)
context.update({'app': _('Terminal'), 'action': _('Update terminal')}) context.update({'app': _('Sessions'), 'action': _('Update terminal')})
return context return context
...@@ -57,7 +57,7 @@ class TerminalDetailView(PermissionsMixin, DetailView): ...@@ -57,7 +57,7 @@ class TerminalDetailView(PermissionsMixin, DetailView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(TerminalDetailView, self).get_context_data(**kwargs) context = super(TerminalDetailView, self).get_context_data(**kwargs)
context.update({ context.update({
'app': _('Terminal'), 'app': _('Sessions'),
'action': _('Terminal detail') 'action': _('Terminal detail')
}) })
return context return context
......
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