mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-24 21:08:30 +00:00
Config (#3502)
* [Update] 修改config * [Update] 移动存储设置到到terminal中 * [Update] 修改permission 查看 * [Update] pre merge * [Update] 录像存储 * [Update] 命令存储 * [Update] 添加存储测试可连接性 * [Update] 修改 meta 值的 key 为大写 * [Update] 修改 Terminal 相关 Storage 配置 * [Update] 删除之前获取录像/命令存储的代码 * [Update] 修改导入失败 * [Update] 迁移文件添加default存储 * [Update] 删除之前代码,添加help_text信息 * [Update] 删除之前代码 * [Update] 删除之前代码 * [Update] 抽象命令/录像存储 APIView * [Update] 抽象命令/录像存储 APIView 1 * [Update] 抽象命令/录像存储 DictField * [Update] 抽象命令/录像存储列表页面 * [Update] 修复CustomDictField的bug * [Update] RemoteApp 页面添加 hidden * [Update] 用户页面添加用户关联授权 * [Update] 修改存储测试可连接性 target * [Update] 修改配置 * [Update] 修改存储前端 Form 渲染逻辑 * [Update] 修改存储细节 * [Update] 统一存储类型到 const 文件 * [Update] 修改迁移文件及Model,创建默认存储 * [Update] 修改迁移文件及Model初始化默认数据 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 限制删除默认存储配置,只允许创建扩展的存储类型 * [Update] 修改ip字段长度 * [Update] 修改ip字段长度 * [Update] 修改一些css * [Update] 修改关联 * [Update] 添加操作日志定时清理 * [Update] 修改记录syslog的instance encoder * [Update] 忽略登录产生的操作日志 * [Update] 限制更新存储时不覆盖原有AK SK 等字段 * [Update] 修改迁移文件添加comment字段 * [Update] 修改迁移文件 * [Update] 添加 comment 字段 * [Update] 修改默认存储no -> null * [Update] 修改细节 * [Update] 更新翻译(存储配置 * [Update] 修改定时任务注册,修改系统用户资产、节点关系api * [Update] 添加监控磁盘任务 * [Update] 修改session * [Update] 拆分serializer * [Update] 还原setting原来的manager
This commit is contained in:
@@ -1,175 +0,0 @@
|
||||
{#{% extends 'base.html' %}#}
|
||||
{% extends '_base_create_update.html' %}
|
||||
{% load static %}
|
||||
{% load bootstrap3 %}
|
||||
{% load i18n %}
|
||||
{% load common_tags %}
|
||||
|
||||
{% block content %}
|
||||
<div class="wrapper wrapper-content animated fadeInRight">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="ibox float-e-margins">
|
||||
<div class="ibox-title">
|
||||
<h5>{{ action }}</h5>
|
||||
<div class="ibox-tools">
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<a class="close-link">
|
||||
<i class="fa fa-times"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ibox-content">
|
||||
<form action="" method="POST" class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="id_type">{% trans "Type" %}</label>
|
||||
<div class="col-md-9">
|
||||
<select id="id_type" class="selector form-control">
|
||||
<option value ="server" selected="selected">server</option>
|
||||
<option value ="es">es (elasticsearch)</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="id_name">{% trans "Name" %}</label>
|
||||
<div class="col-md-9">
|
||||
<input id="id_name" class="form-control" type="text" name="NAME" value="">
|
||||
<div id="id_error" style="color: red;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="display: none;" >
|
||||
<label class="col-md-2 control-label" for="id_hosts">{% trans "Hosts" %}</label>
|
||||
<div class="col-md-9">
|
||||
<input id="id_hosts" class="form-control" type="text" name="HOSTS" value="">
|
||||
<div class="help-block">{% trans 'Tips: If there are multiple hosts, separate them with a comma (,)' %}</div>
|
||||
<div class="help-block">eg: http://www.jumpserver.a.com, http://www.jumpserver.b.com</div>
|
||||
</div>
|
||||
</div>
|
||||
{# <div class="form-group" style="display: none;" >#}
|
||||
{# <label class="col-md-2 control-label" for="id_other">{% trans "Other" %}</label>#}
|
||||
{# <div class="col-md-9">#}
|
||||
{# <input id="id_other" class="form-control" type="text" name="OTHER" value="">#}
|
||||
{# </div>#}
|
||||
{# </div>#}
|
||||
<div class="form-group" style="display: none;" >
|
||||
<label class="col-md-2 control-label" for="id_bucket">{% trans "Index" %}</label>
|
||||
<div class="col-md-9">
|
||||
<input id="id_index" class="form-control" type="text" name="INDEX" value="jumpserver">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="display: none;" >
|
||||
<label class="col-md-2 control-label" for="id_doc_type">{% trans "Doc type" %}</label>
|
||||
<div class="col-md-9">
|
||||
<input id="id_doc_type" class="form-control" type="text" name="DOC_TYPE" value="command_store">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="hr-line-dashed"></div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-4 col-sm-offset-2">
|
||||
<button class="btn btn-default" type="reset"> {% trans 'Reset' %}</button>
|
||||
<a class="btn btn-primary" type="" id="id_submit_button" >{% trans 'Submit' %}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block custom_foot_js %}
|
||||
<script>
|
||||
|
||||
var field_of_all, need_get_field_of_server, need_get_field_of_es;
|
||||
|
||||
function showField(field){
|
||||
$.each(field, function(index, value){
|
||||
$(value).parent('div').parent('div').css('display', '');
|
||||
});
|
||||
}
|
||||
|
||||
function hiddenField(field){
|
||||
$.each(field, function(index, value){
|
||||
$(value).parent('div').parent('div').css('display', 'none');
|
||||
})
|
||||
}
|
||||
|
||||
function getFieldByType(type){
|
||||
|
||||
if(type === 'server'){
|
||||
return need_get_field_of_server
|
||||
}
|
||||
else if(type === 'es'){
|
||||
return need_get_field_of_es
|
||||
}
|
||||
}
|
||||
|
||||
function ajaxAPI(url, data, success, error){
|
||||
$.ajax({
|
||||
url: url,
|
||||
data: data,
|
||||
method: 'POST',
|
||||
contentType: 'application/json; charset=utf-8',
|
||||
success: success,
|
||||
error: error
|
||||
})
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
var name_id = '#id_name';
|
||||
var hosts_id = '#id_hosts';
|
||||
{#var other_id = '#id_other';#}
|
||||
var index_id = '#id_index';
|
||||
var doc_type_id = '#id_doc_type';
|
||||
|
||||
field_of_all = [name_id, hosts_id, index_id, doc_type_id];
|
||||
need_get_field_of_server = [name_id];
|
||||
need_get_field_of_es = [name_id, hosts_id, index_id, doc_type_id];
|
||||
})
|
||||
.on('change', '.selector', function(){
|
||||
var type = $('.selector').val();
|
||||
console.log(type);
|
||||
hiddenField(field_of_all);
|
||||
var field = getFieldByType(type);
|
||||
showField(field)
|
||||
})
|
||||
|
||||
.on('click', '#id_submit_button', function(){
|
||||
var type = $('.selector').val();
|
||||
var field = getFieldByType(type);
|
||||
var data = {'TYPE': type};
|
||||
$.each(field, function(index, id_field){
|
||||
var name = $(id_field).attr('name');
|
||||
var value = $(id_field).val();
|
||||
if(name === 'HOSTS'){
|
||||
data[name] = value.split(',');
|
||||
}
|
||||
else{
|
||||
data[name] = value
|
||||
}
|
||||
});
|
||||
var url = "{% url 'api-settings:command-storage-create' %}";
|
||||
var success = function(data, textStatus) {
|
||||
console.log(data, textStatus);
|
||||
location = "{% url 'settings:terminal-setting' %}";
|
||||
};
|
||||
var error = function(data, textStatus) {
|
||||
var error_msg = data.responseJSON.error;
|
||||
$('#id_error').html(error_msg)
|
||||
};
|
||||
ajaxAPI(url, JSON.stringify(data), success, error)
|
||||
|
||||
})
|
||||
</script>
|
||||
{% endblock %}
|
@@ -1,277 +0,0 @@
|
||||
{#{% extends 'base.html' %}#}
|
||||
{% extends '_base_create_update.html' %}
|
||||
{% load static %}
|
||||
{% load bootstrap3 %}
|
||||
{% load i18n %}
|
||||
{% load common_tags %}
|
||||
|
||||
{% block content %}
|
||||
<div class="wrapper wrapper-content animated fadeInRight">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="ibox float-e-margins">
|
||||
<div class="ibox-title">
|
||||
<h5>{{ action }}</h5>
|
||||
<div class="ibox-tools">
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<a class="close-link">
|
||||
<i class="fa fa-times"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ibox-content">
|
||||
<form action="" method="POST" class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="id_type">{% trans "Type" %}</label>
|
||||
<div class="col-md-9">
|
||||
<select id="id_type" class="selector form-control">
|
||||
<option value ="server" selected="selected">server</option>
|
||||
<option value ="s3">s3</option>
|
||||
<option value="oss">oss</option>
|
||||
<option value ="azure">azure</option>
|
||||
{# <option value="ceph">ceph</option>#}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="id_name">{% trans "Name" %}</label>
|
||||
<div class="col-md-9">
|
||||
<input id="id_name" class="form-control" type="text" name="NAME" value="">
|
||||
<div id="id_error" style="color: red;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="display: none;" >
|
||||
<label class="col-md-2 control-label" for="id_host">{% trans "Host" %}</label>
|
||||
<div class="col-md-9">
|
||||
<input id="id_host" class="form-control" type="text" name="HOSTNAME" value="" placeholder="Host">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="display: none;" >
|
||||
<label class="col-md-2 control-label" for="id_port">{% trans "Port" %}</label>
|
||||
<div class="col-md-9">
|
||||
<input id="id_port" class="form-control" type="text" name="PORT" value="" placeholder="7480">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="display: none;" >
|
||||
<label class="col-md-2 control-label" for="id_bucket">{% trans "Bucket" %}</label>
|
||||
<div class="col-md-9">
|
||||
<input id="id_bucket" class="form-control" type="text" name="BUCKET" value="" placeholder="Bucket">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="display: none;" >
|
||||
<label class="col-md-2 control-label" for="id_access_key">{% trans "Access key" %}</label>
|
||||
<div class="col-md-9">
|
||||
<input id="id_access_key" class="form-control" type="text" name="ACCESS_KEY" value="" placeholder="Access key">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="display: none;" >
|
||||
<label class="col-md-2 control-label" for="id_secret_key">{% trans "Secret key" %}</label>
|
||||
<div class="col-md-9">
|
||||
<input id="id_secret_key" class="form-control" type="text" name="SECRET_KEY" value="", placeholder="Secret key">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="display: none;" >
|
||||
<label class="col-md-2 control-label" for="id_container_name">{% trans "Container name" %}</label>
|
||||
<div class="col-md-9">
|
||||
<input id="id_container_name" class="form-control" type="text" name="CONTAINER_NAME" value="" placeholder="Container">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="display: none;" >
|
||||
<label class="col-md-2 control-label" for="id_account_name">{% trans "Account name" %}</label>
|
||||
<div class="col-md-9">
|
||||
<input id="id_account_name" class="form-control" type="text" name="ACCOUNT_NAME" value="" placeholder="Account name">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="display: none;" >
|
||||
<label class="col-md-2 control-label" for="id_account_key">{% trans "Account key" %}</label>
|
||||
<div class="col-md-9">
|
||||
<input id="id_account_key" class="form-control" type="text" name="ACCOUNT_KEY" value="" placeholder="Account key">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="display: none;" >
|
||||
<label class="col-md-2 control-label" for="id_endpoint">{% trans "Endpoint" %}</label>
|
||||
<div class="col-md-9">
|
||||
<input id="id_endpoint" class="form-control" type="text" name="ENDPOINT" value="" placeholder="Endpoint">
|
||||
<div id="endpoint_error" style="color: red;"></div>
|
||||
<div class="help-block">
|
||||
<span class="oss">
|
||||
{% trans 'OSS: http://{REGION_NAME}.aliyuncs.com' %}
|
||||
<br>
|
||||
{% trans 'Example: http://oss-cn-hangzhou.aliyuncs.com' %}
|
||||
</span>
|
||||
<span class="s3">{% trans 'S3: http://s3.{REGION_NAME}.amazonaws.com' %}<br></span>
|
||||
<span class="s3">{% trans 'S3(China): http://s3.{REGION_NAME}.amazonaws.com.cn' %}<br></span>
|
||||
<span class="s3">{% trans 'Example: http://s3.cn-north-1.amazonaws.com.cn' %}<br></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="display: none;" >
|
||||
<label class="col-md-2 control-label" for="id_endpoint_suffix">{% trans "Endpoint suffix" %}</label>
|
||||
<div class="col-md-9">
|
||||
<select id="id_endpoint_suffix" name="ENDPOINT_SUFFIX" class="endpoint-suffix-selector form-control">
|
||||
<option value="core.chinacloudapi.cn" selected="selected">core.chinacloudapi.cn</option>
|
||||
<option value="core.windows.net">core.windows.net</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="display: none;" >
|
||||
<label class="col-md-2 control-label" for="id_region">{% trans "Region" %}</label>
|
||||
<div class="col-md-9">
|
||||
<input id="id_region" class="form-control" type="text" name="REGION" value="" placeholder="">
|
||||
<div class="help-block">
|
||||
<span class="s3">
|
||||
{% trans 'Beijing: cn-north-1' %}
|
||||
{% trans 'Ningxia: cn-northwest-1' %}
|
||||
<a href="https://docs.aws.amazon.com/zh_cn/general/latest/gr/rande.html">{% trans 'More' %}</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="hr-line-dashed"></div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-4 col-sm-offset-2">
|
||||
<button class="btn btn-default" type="reset"> {% trans 'Reset' %}</button>
|
||||
<a class="btn btn-primary" type="" id="id_submit_button" >{% trans 'Submit' %}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block custom_foot_js %}
|
||||
<script>
|
||||
|
||||
var field_of_all, need_get_field_of_server, need_get_field_of_s3,
|
||||
need_get_field_of_oss, need_get_field_of_azure, need_get_field_of_ceph;
|
||||
|
||||
function showField(field){
|
||||
$.each(field, function(index, value){
|
||||
$(value).parent('div').parent('div').css('display', '');
|
||||
});
|
||||
}
|
||||
|
||||
function hiddenField(field){
|
||||
$.each(field, function(index, value){
|
||||
$(value).parent('div').parent('div').css('display', 'none');
|
||||
})
|
||||
}
|
||||
|
||||
function getFieldByType(type){
|
||||
if(type === 'server'){
|
||||
return need_get_field_of_server
|
||||
}
|
||||
else if(type === 's3'){
|
||||
return need_get_field_of_s3
|
||||
}
|
||||
else if(type === 'oss'){
|
||||
return need_get_field_of_oss
|
||||
}
|
||||
else if(type === 'azure'){
|
||||
return need_get_field_of_azure
|
||||
}
|
||||
else if(type === 'ceph'){
|
||||
return need_get_field_of_ceph
|
||||
}
|
||||
}
|
||||
|
||||
function ajaxAPI(url, data, success, error){
|
||||
$.ajax({
|
||||
url: url,
|
||||
data: data,
|
||||
method: 'POST',
|
||||
contentType: 'application/json; charset=utf-8',
|
||||
success: success,
|
||||
error: error
|
||||
})
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
var name_id = '#id_name';
|
||||
var host_id = '#id_host';
|
||||
var port_id = '#id_port';
|
||||
var bucket_id = '#id_bucket';
|
||||
var access_key_id = '#id_access_key';
|
||||
var secret_key_id = '#id_secret_key';
|
||||
var container_name_id = '#id_container_name';
|
||||
var account_name_id = '#id_account_name';
|
||||
var account_key_id = '#id_account_key';
|
||||
var endpoint_id = '#id_endpoint';
|
||||
var endpoint_suffix_id = '#id_endpoint_suffix';
|
||||
var region_id = '#id_region';
|
||||
|
||||
field_of_all = [name_id, host_id, port_id, bucket_id, access_key_id, secret_key_id, container_name_id, account_name_id, account_key_id, endpoint_id, endpoint_suffix_id, region_id];
|
||||
need_get_field_of_server = [name_id];
|
||||
need_get_field_of_s3 = [name_id, bucket_id, access_key_id, secret_key_id, endpoint_id];
|
||||
need_get_field_of_oss = [name_id, bucket_id, access_key_id, secret_key_id, endpoint_id];
|
||||
need_get_field_of_azure = [name_id, container_name_id, account_name_id, account_key_id, endpoint_suffix_id];
|
||||
need_get_field_of_ceph = [name_id, host_id, port_id, bucket_id, access_key_id, secret_key_id, region_id];
|
||||
})
|
||||
.on('change', '.selector', function(){
|
||||
var type = $('.selector').val();
|
||||
$("." + type).show();
|
||||
hiddenField(field_of_all);
|
||||
$('.help-block').children().hide();
|
||||
$('.help-block ' + '.' + type).show();
|
||||
var field = getFieldByType(type);
|
||||
showField(field)
|
||||
})
|
||||
|
||||
.on('click', '#id_submit_button', function(){
|
||||
$('#id_error').html('');
|
||||
var submitBtn = $("#id_submit_button");
|
||||
var origin_text = submitBtn.html();
|
||||
submitBtn.addClass('disabled');
|
||||
submitBtn.html("{% trans 'Submitting' %}");
|
||||
var type = $('.selector').val();
|
||||
var field = getFieldByType(type);
|
||||
var data = {'TYPE': type};
|
||||
$.each(field, function(index, id_field){
|
||||
var name = $(id_field).attr('name');
|
||||
data[name] = $(id_field).val();
|
||||
});
|
||||
if (data['ENDPOINT'] && data['ENDPOINT'].indexOf('http') === -1) {
|
||||
var msg = "{% trans 'Endpoint need contain protocol, ex: http' %}";
|
||||
$("#endpoint_error").html(msg);
|
||||
submitBtn.removeClass('disabled');
|
||||
submitBtn.html(origin_text);
|
||||
return
|
||||
}
|
||||
var url = "{% url 'api-settings:replay-storage-create' %}";
|
||||
var success = function(data, textStatus) {
|
||||
location = "{% url 'settings:terminal-setting' %}";
|
||||
submitBtn.removeClass('disabled');
|
||||
submitBtn.html(origin_text);
|
||||
};
|
||||
var error = function(data, textStatus) {
|
||||
var error_msg = data.responseJSON.error;
|
||||
$('#id_error').html(error_msg);
|
||||
submitBtn.removeClass('disabled');
|
||||
submitBtn.html(origin_text);
|
||||
};
|
||||
ajaxAPI(url, JSON.stringify(data), success, error);
|
||||
})
|
||||
</script>
|
||||
{% endblock %}
|
@@ -44,7 +44,7 @@
|
||||
|
||||
<h3>{% trans "Security setting" %}</h3>
|
||||
{% for field in form %}
|
||||
{% if forloop.counter == 6 %}
|
||||
{% if forloop.counter == 8 %}
|
||||
<div class="hr-line-dashed"></div>
|
||||
<h3>{% trans "Password check rule" %}</h3>
|
||||
{% endif %}
|
||||
|
@@ -3,6 +3,11 @@
|
||||
{% load bootstrap3 %}
|
||||
{% load i18n %}
|
||||
{% load common_tags %}
|
||||
{% block help_message %}
|
||||
{% trans "Command and Replay storage configuration migrated to" %}
|
||||
{% trans "Sessions -> Terminal -> Storage configuration" %}
|
||||
<b><a href="{% url 'terminal:replay-storage-list' %}">{% trans 'Here' %}</a></b>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="wrapper wrapper-content animated fadeInRight">
|
||||
@@ -65,7 +70,7 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<div class="hr-line-dashed"></div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-4 col-sm-offset-2">
|
||||
<button class="btn btn-default" type="reset"> {% trans 'Reset' %}</button>
|
||||
@@ -73,53 +78,6 @@
|
||||
type="submit">{% trans 'Submit' %}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="hr-line-dashed"></div>
|
||||
|
||||
<h3>{% trans "Command storage" %}</h3>
|
||||
<table class="table table-hover " id="task-history-list-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{% trans 'Name' %}</th>
|
||||
<th>{% trans 'Type' %}</th>
|
||||
<th>{% trans 'Action' %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for name, setting in command_storage.items %}
|
||||
<tr>
|
||||
<td>{{ name }}</td>
|
||||
<td>{{ setting.TYPE }}</td>
|
||||
<td><a class="btn btn-xs btn-danger m-l-xs btn-del-command" {% if setting.TYPE == 'server' and name == 'default' %} disabled {% endif %} data-name="{{ name }}">{% trans 'Delete' %}</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<a href="{% url 'settings:command-storage-create' %}" class="btn btn-primary btn-xs">{% trans 'Add' %}</a>
|
||||
|
||||
<div class="hr-line-dashed"></div>
|
||||
<h3>{% trans "Replay storage" %}</h3>
|
||||
<table class="table table-hover " id="task-history-list-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{% trans 'Name' %}</th>
|
||||
<th>{% trans 'Type' %}</th>
|
||||
<th>{% trans 'Action' %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for name, setting in replay_storage.items %}
|
||||
<tr>
|
||||
<td>{{ name }}</td>
|
||||
<td>{{ setting.TYPE }}</td>
|
||||
<td><a class="btn btn-xs btn-danger m-l-xs btn-del-replay" {% if setting.TYPE == 'server' and name == 'default' %} disabled {% endif %} data-name="{{ name }}">{% trans 'Delete' %}</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<a href="{% url 'settings:replay-storage-create' %}" class="btn btn-primary btn-xs">{% trans 'Add' %}</a>
|
||||
|
||||
<div class="hr-line-dashed"></div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -131,60 +89,7 @@
|
||||
{% endblock %}
|
||||
{% block custom_foot_js %}
|
||||
<script>
|
||||
|
||||
function ajaxAPI(url, data, success, error, method){
|
||||
$.ajax({
|
||||
url: url,
|
||||
data: data,
|
||||
method: method,
|
||||
contentType: 'application/json; charset=utf-8',
|
||||
success: success,
|
||||
error: error
|
||||
})
|
||||
}
|
||||
|
||||
function deleteStorage($this, the_url){
|
||||
var name = $this.data('name');
|
||||
function doDelete(){
|
||||
console.log('delete storage');
|
||||
var data = {"name": name};
|
||||
var method = 'POST';
|
||||
var success = function(){
|
||||
$this.parent().parent().remove();
|
||||
toastr.success("{% trans 'Delete succeed' %}");
|
||||
};
|
||||
var error = function(){
|
||||
toastr.error("{% trans 'Delete failed' %}");
|
||||
};
|
||||
ajaxAPI(the_url, JSON.stringify(data), success, error, method);
|
||||
}
|
||||
swal({
|
||||
title: "{% trans 'Are you sure about deleting it?' %}",
|
||||
text: " [" + name + "] ",
|
||||
type: "warning",
|
||||
showCancelButton: true,
|
||||
cancelButtonText: "{% trans 'Cancel' %}",
|
||||
confirmButtonColor: "#ed5565",
|
||||
confirmButtonText: "{% trans 'Confirm' %}",
|
||||
closeOnConfirm: true
|
||||
}, function () {
|
||||
doDelete()
|
||||
});
|
||||
}
|
||||
|
||||
$(document).ready(function () {
|
||||
|
||||
})
|
||||
.on('click', '.btn-del-replay', function(){
|
||||
var $this = $(this);
|
||||
var the_url = "{% url 'api-settings:replay-storage-delete' %}";
|
||||
deleteStorage($this, the_url);
|
||||
})
|
||||
.on('click', '.btn-del-command', function() {
|
||||
var $this = $(this);
|
||||
var the_url = "{% url 'api-settings:command-storage-delete' %}";
|
||||
deleteStorage($this, the_url)
|
||||
});
|
||||
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
Reference in New Issue
Block a user