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