Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
jumpserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
jumpserver
Commits
42f297e6
Commit
42f297e6
authored
Mar 14, 2018
by
ibuler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Update] 更新一些文案
parent
74047d19
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
137 additions
and
85 deletions
+137
-85
node.py
apps/assets/api/node.py
+3
-2
asset.py
apps/assets/forms/asset.py
+5
-3
tasks.py
apps/assets/tasks.py
+20
-10
django.mo
apps/i18n/zh/LC_MESSAGES/django.mo
+0
-0
django.po
apps/i18n/zh/LC_MESSAGES/django.po
+94
-55
forms.py
apps/terminal/forms.py
+5
-5
terminal_list.html
apps/terminal/templates/terminal/terminal_list.html
+6
-6
terminal_modal_accept.html
apps/terminal/templates/terminal/terminal_modal_accept.html
+2
-2
terminal_update.html
apps/terminal/templates/terminal/terminal_update.html
+2
-2
No files found.
apps/assets/api/node.py
View file @
42f297e6
...
...
@@ -130,7 +130,8 @@ class RefreshNodeHardwareInfoApi(APIView):
node_id
=
kwargs
.
get
(
'pk'
)
node
=
get_object_or_404
(
self
.
model
,
id
=
node_id
)
assets
=
node
.
assets
.
all
()
task_name
=
_
(
"Refresh node assets hardware info: {}"
.
format
(
node
.
name
))
# task_name = _("Refresh node assets hardware info: {}".format(node.name))
task_name
=
_
(
"更新节点资产硬件信息: {}"
.
format
(
node
.
name
))
update_assets_hardware_info_util
.
delay
(
assets
,
task_name
=
task_name
)
return
Response
({
"msg"
:
"Task created"
})
...
...
@@ -143,7 +144,7 @@ class TestNodeConnectiveApi(APIView):
node_id
=
kwargs
.
get
(
'pk'
)
node
=
get_object_or_404
(
self
.
model
,
id
=
node_id
)
assets
=
node
.
assets
.
all
()
task_name
=
_
(
"
Test node assets connective
: {}"
.
format
(
node
.
name
))
task_name
=
_
(
"
测试节点下资产是否可连接
: {}"
.
format
(
node
.
name
))
test_asset_connectability_util
.
delay
(
assets
,
task_name
=
task_name
)
return
Response
({
"msg"
:
"Task created"
})
apps/assets/forms/asset.py
View file @
42f297e6
...
...
@@ -38,7 +38,8 @@ class AssetCreateForm(forms.ModelForm):
'Admin user is a privilege user exist on this asset,'
'Example: root or other NOPASSWD sudo privilege user'
'If asset not support ansible, set any one'
)
),
'platform'
:
_
(
"* required Must set exact system platform, Windows, Linux ..."
)
}
...
...
@@ -70,7 +71,8 @@ class AssetUpdateForm(forms.ModelForm):
'Admin user is a privilege user exist on this asset,'
'Example: root or other NOPASSWD sudo privilege user'
'If asset not support ansible, set any one'
)
),
'platform'
:
_
(
"* required Must set exact system platform, Windows, Linux ..."
)
}
...
...
@@ -102,7 +104,7 @@ class AssetBulkUpdateForm(forms.ModelForm):
class
Meta
:
model
=
Asset
fields
=
[
'assets'
,
'port'
,
'admin_user'
,
'labels'
,
'nodes'
,
'assets'
,
'port'
,
'admin_user'
,
'labels'
,
'nodes'
,
'platform'
]
widgets
=
{
'labels'
:
forms
.
SelectMultiple
(
...
...
apps/assets/tasks.py
View file @
42f297e6
...
...
@@ -91,7 +91,8 @@ def update_assets_hardware_info_util(assets, task_name=None):
"""
from
ops.utils
import
update_or_create_ansible_task
if
task_name
is
None
:
task_name
=
_
(
"Update some assets hardware info"
)
# task_name = _("Update some assets hardware info")
task_name
=
_
(
"更新资产硬件信息"
)
tasks
=
const
.
UPDATE_ASSETS_HARDWARE_TASKS
hostname_list
=
[
asset
.
hostname
for
asset
in
assets
if
asset
.
is_active
and
asset
.
is_unixlike
()]
task
,
created
=
update_or_create_ansible_task
(
...
...
@@ -107,7 +108,8 @@ def update_assets_hardware_info_util(assets, task_name=None):
@shared_task
def
update_asset_hardware_info_manual
(
asset
):
task_name
=
_
(
"Update asset hardware info"
)
# task_name = _("Update asset hardware info")
task_name
=
_
(
"更新资产硬件信息"
)
return
update_assets_hardware_info_util
([
asset
],
task_name
=
task_name
)
...
...
@@ -125,7 +127,8 @@ def update_assets_hardware_info_period():
return
from
ops.utils
import
update_or_create_ansible_task
task_name
=
_
(
"Update assets hardware info period"
)
# task_name = _("Update assets hardware info period")
task_name
=
_
(
"定期更新资产硬件信息"
)
hostname_list
=
[
asset
.
hostname
for
asset
in
Asset
.
objects
.
all
()
if
asset
.
is_active
and
asset
.
is_unixlike
()
...
...
@@ -202,13 +205,15 @@ def test_admin_user_connectability_period():
admin_users
=
AdminUser
.
objects
.
all
()
for
admin_user
in
admin_users
:
task_name
=
_
(
"Test admin user connectability period: {}"
.
format
(
admin_user
.
name
))
# task_name = _("Test admin user connectability period: {}".format(admin_user.name))
task_name
=
_
(
"定期测试管理账号可连接性: {}"
.
format
(
admin_user
.
name
))
test_admin_user_connectability_util
(
admin_user
,
task_name
)
@shared_task
def
test_admin_user_connectability_manual
(
admin_user
):
task_name
=
_
(
"Test admin user connectability: {}"
)
.
format
(
admin_user
.
name
)
# task_name = _("Test admin user connectability: {}").format(admin_user.name)
task_name
=
_
(
"测试管理行号可连接性: {}"
)
.
format
(
admin_user
.
name
)
return
test_admin_user_connectability_util
.
delay
(
admin_user
,
task_name
)
...
...
@@ -217,8 +222,9 @@ def test_asset_connectability_util(assets, task_name=None):
from
ops.utils
import
update_or_create_ansible_task
if
task_name
is
None
:
task_name
=
_
(
"Test assets connectability"
)
hosts
=
[
asset
.
hostname
for
asset
in
assets
]
# task_name = _("Test assets connectability")
task_name
=
_
(
"测试资产可连接性"
)
hosts
=
[
asset
.
hostname
for
asset
in
assets
if
asset
.
is_active
and
asset
.
is_unixlike
()]
if
not
hosts
:
logger
.
info
(
"No hosts, passed"
)
return
{}
...
...
@@ -302,7 +308,8 @@ def test_system_user_connectability_period():
system_users
=
SystemUser
.
objects
.
all
()
for
system_user
in
system_users
:
task_name
=
_
(
"test system user connectability period: {}"
.
format
(
system_user
))
# task_name = _("Test system user connectability period: {}".format(system_user))
task_name
=
_
(
"定期测试系统用户可连接性: {}"
.
format
(
system_user
))
test_system_user_connectability_util
(
system_user
,
task_name
)
...
...
@@ -379,7 +386,9 @@ def push_system_user_util(system_users, assets, task_name):
def
get_node_push_system_user_task_name
(
system_user
,
node
):
return
_
(
"Push system user to node: {} => {}"
)
.
format
(
# return _("Push system user to node: {} => {}").format(
return
_
(
"推送系统用户到节点资产: {} => {}"
)
.
format
(
system_user
.
name
,
node
.
value
)
...
...
@@ -417,7 +426,8 @@ def push_node_system_users_to_asset(node, assets):
system_users
.
extend
(
list
(
n
.
systemuser_set
.
all
()))
if
system_users
:
task_name
=
_
(
"Push system users to node: {}"
)
.
format
(
node
.
value
)
# task_name = _("Push system users to node: {}").format(node.value)
task_name
=
_
(
"推送节点系统用户到新加入资产中: {}"
)
.
format
(
node
.
value
)
push_system_user_util
.
delay
(
system_users
,
assets
,
task_name
)
...
...
apps/i18n/zh/LC_MESSAGES/django.mo
View file @
42f297e6
No preview for this file type
apps/i18n/zh/LC_MESSAGES/django.po
View file @
42f297e6
...
...
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Jumpserver 0.3.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-03-1
2 11:28
+0800\n"
"POT-Creation-Date: 2018-03-1
4 13:07
+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"
...
...
@@ -21,15 +21,15 @@ msgstr ""
msgid "New node {}"
msgstr "新节点 {}"
#: assets/api/node.py:13
3
msgid "
Refresh node assets hardware info
: {}"
msgstr "
更新一些资产硬件信息: {}
"
#: assets/api/node.py:13
4
msgid "
更新节点资产硬件信息
: {}"
msgstr ""
#: assets/api/node.py:14
6
#: assets/api/node.py:14
7
msgid "Test node assets connective: {}"
msgstr "测试节点资产可连接性"
#: assets/forms/asset.py:23 assets/forms/asset.py:5
4
assets/forms/user.py:125
#: assets/forms/asset.py:23 assets/forms/asset.py:5
5
assets/forms/user.py:125
#: assets/models/asset.py:53 assets/models/user.py:218
#: assets/templates/assets/asset_detail.html:181
#: assets/templates/assets/asset_detail.html:189
...
...
@@ -37,34 +37,38 @@ msgstr "测试节点资产可连接性"
msgid "Nodes"
msgstr "节点管理"
#: assets/forms/asset.py:26 assets/forms/asset.py:5
7 assets/forms/asset.py:93
#: assets/forms/asset.py:9
7
assets/models/asset.py:57
#: assets/forms/asset.py:26 assets/forms/asset.py:5
8 assets/forms/asset.py:95
#: assets/forms/asset.py:9
9
assets/models/asset.py:57
#: assets/models/cluster.py:19 assets/models/user.py:187
#: assets/templates/assets/asset_detail.html:73 templates/_nav.html:24
msgid "Admin user"
msgstr "管理用户"
#: assets/forms/asset.py:29 assets/forms/asset.py:6
0
assets/models/asset.py:81
#: assets/forms/asset.py:29 assets/forms/asset.py:6
1
assets/models/asset.py:81
#: assets/templates/assets/asset_create.html:32
#: assets/templates/assets/asset_detail.html:218
#: assets/templates/assets/asset_update.html:37 templates/_nav.html:26
msgid "Labels"
msgstr "标签管理"
#: assets/forms/asset.py:38 assets/forms/asset.py:7
0
#: assets/forms/asset.py:38 assets/forms/asset.py:7
1
msgid ""
"Admin user is a privilege user exist on this asset,Example: root or other "
"NOPASSWD sudo privilege userIf asset not support ansible, set any one"
msgstr ""
"管理用户是资产上已经存在的特权用户,如 root或者其它有NOPASSWD的用户, 如果资产"
"不支持ansible, 任意设置一个即可"
"是Windows或交换机, 任意设置一个即可"
#: assets/forms/asset.py:42 assets/forms/asset.py:75
msgid "* required Must set exact system platform, Windows, Linux ..."
msgstr "* required 必须准确设置操作系统平台,如Windows, Linux ..."
#: assets/forms/asset.py:8
0 assets/forms/asset.py:84
assets/forms/label.py:15
#: assets/forms/asset.py:8
2 assets/forms/asset.py:86
assets/forms/label.py:15
#: perms/templates/perms/asset_permission_asset.html:88 users/forms.py:244
msgid "Select assets"
msgstr "选择资产"
#: assets/forms/asset.py:
89
assets/models/asset.py:52
#: assets/forms/asset.py:
91
assets/models/asset.py:52
#: assets/templates/assets/admin_user_assets.html:53
#: assets/templates/assets/asset_detail.html:69
#: assets/templates/assets/system_user_asset.html:51
...
...
@@ -72,11 +76,11 @@ msgstr "选择资产"
msgid "Port"
msgstr "端口"
#: assets/forms/asset.py:1
09
assets/templates/assets/asset_create.html:36
#: assets/forms/asset.py:1
11
assets/templates/assets/asset_create.html:36
msgid "Select labels"
msgstr "选择标签"
#: assets/forms/asset.py:11
2
assets/templates/assets/admin_user_detail.html:91
#: assets/forms/asset.py:11
4
assets/templates/assets/admin_user_detail.html:91
msgid "Select nodes"
msgstr "选择节点"
...
...
@@ -432,47 +436,41 @@ msgstr "系统用户"
msgid "%(value)s is not an even number"
msgstr "%(value)s is not an even number"
#: assets/tasks.py:94
msgid "Update some assets hardware info"
msgstr "更新一些资产硬件信息"
#: assets/tasks.py:110
msgid "Update asset hardware info"
msgstr "更新资产硬件信息"
#: assets/tasks.py:95 assets/tasks.py:112
msgid "更新资产硬件信息"
msgstr ""
#: assets/tasks.py:1
28
msgid "
Update assets hardware info period
"
msgstr "
定期更新资产硬件信息
"
#: assets/tasks.py:1
31
msgid "
定期更新资产硬件信息
"
msgstr ""
#: assets/tasks.py:20
5
msgid "
Test admin user connectability period
: {}"
msgstr "
定期测试管理用户可连接性: {}
"
#: assets/tasks.py:20
9
msgid "
定期测试管理账号可连接性
: {}"
msgstr ""
#: assets/tasks.py:21
1
msgid "
Test admin user connectability
: {}"
msgstr "
测试管理用户可连接性: {}
"
#: assets/tasks.py:21
6
msgid "
测试管理行号可连接性
: {}"
msgstr ""
#: assets/tasks.py:220
#, fuzzy
#| msgid "Test asset connectability"
msgid "Test assets connectability"
msgstr "测试资产可连接性"
#: assets/tasks.py:226
msgid "测试资产可连接性"
msgstr ""
#: assets/tasks.py:29
0
#: assets/tasks.py:29
6
msgid "Test system user connectability: {}"
msgstr "测试系统用户可连接性: {}"
#: assets/tasks.py:3
05
msgid "
test system user connectability period
: {}"
msgstr "
测试系统用户可连接性: {}
"
#: assets/tasks.py:3
12
msgid "
定期测试系统用户可连接性
: {}"
msgstr ""
#: assets/tasks.py:3
82
msgid "
Push system user to node
: {} => {}"
msgstr "
推送系统用户到节点: {}->{}
"
#: assets/tasks.py:3
91
msgid "
推送系统用户到节点资产
: {} => {}"
msgstr ""
#: assets/tasks.py:4
2
0
msgid "
Push system users to node
: {}"
msgstr "
推送系统用户到节点: {}
"
#: assets/tasks.py:4
3
0
msgid "
推送节点系统用户到新加入资产中
: {}"
msgstr ""
#: assets/templates/assets/_asset_group_bulk_update_modal.html:5
msgid "Update asset group"
...
...
@@ -1229,7 +1227,7 @@ msgid ""
msgstr "设置终端命令存储,default是默认用的存储方式"
#: common/forms.py:165 common/templates/common/terminal_setting.html:81
#: terminal/forms.py:3
4
terminal/models.py:21
#: terminal/forms.py:3
5
terminal/models.py:21
msgid "Replay storage"
msgstr "录像存储"
...
...
@@ -1833,13 +1831,18 @@ msgstr "输出"
msgid "Session"
msgstr "会话"
#: terminal/forms.py:44
msgid "Coco ssh listen port"
msgstr "SSH 监听端口"
#: terminal/forms.py:31
msgid "Command can store in server db or ES, default to server, more see docs"
msgstr ""
"命令支持存储到服务器端数据库、ES中,默认存储的服务器端数据库,更多查看文档"
#: terminal/forms.py:45
msgid "Coco http/ws listen port"
msgstr "Http/Websocket 监听端口"
#: terminal/forms.py:36
msgid ""
"Replay file can store in server disk, AWS S3, Aliyun OSS, default to server, "
"more see docs"
msgstr ""
"录像文件支持存储到服务器端硬盘、AWS S3、 阿里云 OSS 中,默认存储到服务器端硬"
"盘, 更多查看文档"
#: terminal/models.py:17
msgid "Remote Address"
...
...
@@ -1966,12 +1969,10 @@ msgid "Terminal detail"
msgstr "终端详情"
#: terminal/templates/terminal/terminal_detail.html:51
#: terminal/templates/terminal/terminal_list.html:31
msgid "SSH port"
msgstr "SSH端口"
#: terminal/templates/terminal/terminal_detail.html:55
#: terminal/templates/terminal/terminal_list.html:32
msgid "Http port"
msgstr "HTTP端口"
...
...
@@ -2667,5 +2668,43 @@ msgstr "密码更新"
msgid "Public key update"
msgstr "密钥更新"
#~ msgid "Refresh node assets hardware info: {}"
#~ msgstr "更新一些资产硬件信息: {}"
#~ msgid "Update some assets hardware info"
#~ msgstr "更新一些资产硬件信息"
#~ msgid "Update asset hardware info"
#~ msgstr "更新资产硬件信息"
#~ msgid "Update assets hardware info period"
#~ msgstr "定期更新资产硬件信息"
#~ msgid "Test admin user connectability period: {}"
#~ msgstr "定期测试管理用户可连接性: {}"
#~ msgid "Test admin user connectability: {}"
#~ msgstr "测试管理用户可连接性: {}"
#, fuzzy
#~| msgid "Test asset connectability"
#~ msgid "Test assets connectability"
#~ msgstr "测试资产可连接性"
#~ msgid "Test system user connectability period: {}"
#~ msgstr "测试系统用户可连接性: {}"
#~ msgid "Push system user to node: {} => {}"
#~ msgstr "推送系统用户到节点: {}->{}"
#~ msgid "Push system users to node: {}"
#~ msgstr "推送系统用户到节点: {}"
#~ msgid "Coco ssh listen port"
#~ msgstr "SSH 监听端口"
#~ msgid "Coco http/ws listen port"
#~ msgstr "Http/Websocket 监听端口"
#~ msgid "Create asset permission "
#~ msgstr "创建资产权限"
apps/terminal/forms.py
View file @
42f297e6
...
...
@@ -27,20 +27,20 @@ def get_all_replay_storage():
class
TerminalForm
(
forms
.
ModelForm
):
command_storage
=
forms
.
ChoiceField
(
choices
=
get_all_command_storage
(),
label
=
_
(
"Command storage"
)
label
=
_
(
"Command storage"
),
help_text
=
_
(
"Command can store in server db or ES, default to server, more see docs"
),
)
replay_storage
=
forms
.
ChoiceField
(
choices
=
get_all_replay_storage
(),
label
=
_
(
"Replay storage"
)
label
=
_
(
"Replay storage"
),
help_text
=
_
(
"Replay file can store in server disk, AWS S3, Aliyun OSS, default to server, more see docs"
),
)
class
Meta
:
model
=
Terminal
fields
=
[
'name'
,
'remote_addr'
,
'
ssh_port'
,
'http_port'
,
'
comment'
,
'name'
,
'remote_addr'
,
'comment'
,
'command_storage'
,
'replay_storage'
,
]
help_texts
=
{
'ssh_port'
:
_
(
"Coco ssh listen port"
),
'http_port'
:
_
(
"Coco http/ws listen port"
),
}
apps/terminal/templates/terminal/terminal_list.html
View file @
42f297e6
...
...
@@ -28,8 +28,8 @@
</th>
<th
class=
"text-center"
>
{% trans 'Name' %}
</th>
<th
class=
"text-center"
>
{% trans 'Addr' %}
</th>
<th
class=
"text-center"
>
{% trans 'SSH port' %}
</th>
<th
class=
"text-center"
>
{% trans 'Http port' %}
</th>
{#
<th
class=
"text-center"
>
{% trans 'SSH port' %}
</th>
#}
{#
<th
class=
"text-center"
>
{% trans 'Http port' %}
</th>
#}
<th
class=
"text-center"
>
{% trans 'Session' %}
</th>
<th
class=
"text-center"
>
{% trans 'Active' %}
</th>
<th
class=
"text-center"
>
{% trans 'Alive' %}
</th>
...
...
@@ -53,21 +53,21 @@ function initTable() {
var
detail_btn
=
'<a href="{% url "terminal:terminal-detail" pk=DEFAULT_PK %}">'
+
cellData
+
'</a>'
;
$
(
td
).
html
(
detail_btn
.
replace
(
'{{ DEFAULT_PK }}'
,
rowData
.
id
));
}},
{
targets
:
6
,
createdCell
:
function
(
td
,
cellData
)
{
{
targets
:
4
,
createdCell
:
function
(
td
,
cellData
)
{
if
(
!
cellData
)
{
$
(
td
).
html
(
'<i class="fa fa-times text-danger"></i>'
)
}
else
{
$
(
td
).
html
(
'<i class="fa fa-check text-navy"></i>'
)
}
}},
{
targets
:
7
,
createdCell
:
function
(
td
,
cellData
)
{
{
targets
:
5
,
createdCell
:
function
(
td
,
cellData
)
{
if
(
!
cellData
)
{
$
(
td
).
html
(
'<i class="fa fa-circle text-danger"></i>'
)
}
else
{
$
(
td
).
html
(
'<i class="fa fa-circle text-navy"></i>'
)
}
}},
{
targets
:
8
,
createdCell
:
function
(
td
,
cellData
,
rowData
)
{
{
targets
:
6
,
createdCell
:
function
(
td
,
cellData
,
rowData
)
{
var
update_btn
=
'<a href="{% url "terminal:terminal-update" pk=DEFAULT_PK %}" class="btn btn-xs btn-info">{% trans "Update" %}</a>'
.
replace
(
'{{ DEFAULT_PK }}'
,
cellData
);
var
delete_btn
=
'<a class="btn btn-xs btn-danger m-l-xs btn-del" data-id="{{ DEFAULT_PK }}" data-name="99991938">{% trans "Delete" %}</a>'
...
...
@@ -88,7 +88,7 @@ function initTable() {
}}
],
ajax_url
:
'{% url "api-terminal:terminal-list" %}'
,
columns
:
[{
data
:
function
(){
return
""
}},
{
data
:
"name"
},
{
data
:
"remote_addr"
},
{
data
:
"ssh_port"
},
{
data
:
"http_port"
},
columns
:
[{
data
:
function
(){
return
""
}},
{
data
:
"name"
},
{
data
:
"remote_addr"
},
{
data
:
"session_online"
},
{
data
:
"is_active"
},
{
data
:
'is_alive'
},
{
data
:
"id"
}],
op_html
:
$
(
'#actions'
).
html
()
};
...
...
apps/terminal/templates/terminal/terminal_modal_accept.html
View file @
42f297e6
...
...
@@ -10,8 +10,8 @@
<p
class=
"alert alert-danger"
id=
"modal-error"
style=
"display: none"
></p>
{% bootstrap_field form.name layout="horizontal" %}
{% bootstrap_field form.remote_addr layout="horizontal" %}
{% bootstrap_field form.ssh_port layout="horizontal" %
}
{% bootstrap_field form.http_port layout="horizontal" %
}
{# {% bootstrap_field form.ssh_port layout="horizontal" %}#
}
{# {% bootstrap_field form.http_port layout="horizontal" %}#
}
{% bootstrap_field form.command_storage layout="horizontal" %}
{% bootstrap_field form.replay_storage layout="horizontal" %}
{% bootstrap_field form.comment layout="horizontal" %}
...
...
apps/terminal/templates/terminal/terminal_update.html
View file @
42f297e6
...
...
@@ -33,8 +33,8 @@
<h3>
{% trans 'Info' %}
</h3>
{% bootstrap_field form.name layout="horizontal" %}
{% bootstrap_field form.remote_addr layout="horizontal" %}
{% bootstrap_field form.ssh_port layout="horizontal" %
}
{% bootstrap_field form.http_port layout="horizontal" %
}
{# {% bootstrap_field form.ssh_port layout="horizontal" %}#
}
{# {% bootstrap_field form.http_port layout="horizontal" %}#
}
{% bootstrap_field form.command_storage layout="horizontal" %}
{% bootstrap_field form.replay_storage layout="horizontal" %}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment