Skip to content

Commit

Permalink
提升版本号为v1.6.3
Browse files Browse the repository at this point in the history
优化获取用户实例列表的方法,提升查询效率
各前端页面的实例列表改为ajax异步获取,提升效率 fix#278
  • Loading branch information
hhyo committed Jun 17, 2019
1 parent d610084 commit 7cb4413
Show file tree
Hide file tree
Showing 17 changed files with 430 additions and 264 deletions.
2 changes: 1 addition & 1 deletion common/templates/login.html
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ <h4 class="modal-title" id="myModalLabel">

<!--底部部分 -->
<div class="row clearfix user-bottom-div">
<p><strong>SQL审核平台</strong>&nbsp;(v1.6.2)</p>
<p><strong>SQL审核平台</strong>&nbsp;(v1.6.3)</p>
</div>
<!-- jQuery (Bootstrap JavaScript 插件需要引入 jQuery务必先引入jquery js再引入bootstrap js) -->
<script src="{% static 'jquery/jquery.min.js' %}"></script>
Expand Down
2 changes: 1 addition & 1 deletion sql/query_privileges.py
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ def query_priv_apply(request):
result['msg'] = '请填写完整'
return HttpResponse(json.dumps(result), content_type='application/json')
try:
user_instances(request.user, type='all', db_type='all').get(instance_name=instance_name)
user_instances(request.user, type='all', db_type='all', tag_codes=['can_read']).get(instance_name=instance_name)
except Instance.DoesNotExist:
result['status'] = 1
result['msg'] = '你所在组未关联该实例!'
Expand Down
13 changes: 13 additions & 0 deletions sql/resource_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from common.utils.extend_json_encoder import ExtendJSONEncoder
from common.utils.permission import superuser_required
from sql.models import ResourceGroup, ResourceGroup2Instance, ResourceGroup2User, Users, Instance, InstanceTag
from sql.utils.resource_group import user_instances
from sql.utils.workflow_audit import Audit

logger = logging.getLogger('default')
Expand Down Expand Up @@ -144,6 +145,18 @@ def instances(request):
return HttpResponse(json.dumps(result), content_type='application/json')


def user_all_instances(request):
"""获取用户所有实例列表(通过资源组间接关联)"""
user = request.user
type = request.GET.get('type')
db_type = request.GET.get('db_type')
tag_codes = request.GET.getlist('tag_codes[]')
instances = user_instances(user, type, db_type, tag_codes).values('id', 'type', 'db_type', 'instance_name')
rows = [row for row in instances]
result = {'status': 0, 'msg': 'ok', "data": rows}
return HttpResponse(json.dumps(result), content_type='application/json')


@superuser_required
def addrelation(request):
"""
Expand Down
2 changes: 1 addition & 1 deletion sql/sql_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ def submit(request):

# 验证组权限(用户是否在该组、该组是否有指定实例)
try:
user_instances(request.user, type='all', db_type='all').get(instance_name=instance_name)
user_instances(request.user, type='all', db_type='all', tag_codes=['can_write']).get(instance_name=instance_name)
except instance.DoesNotExist:
context = {'errMsg': '你所在组未关联该实例!'}
return render(request, 'error.html', context)
Expand Down
35 changes: 32 additions & 3 deletions sql/templates/binlog2sql.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@ <h5 class="control-label text-bold">选择实例:</h5>
class="selectpicker show-tick form-control bs-select-hidden"
title="请选择实例:"
data-live-search="true" required>
{% for instance_name in instances %}
<option value="{{ instance_name }}">{{ instance_name }}</option>
{% endfor %}
</select>
</div>
</div>
Expand Down Expand Up @@ -156,6 +153,38 @@ <h5 class="control-label text-bold" style="color: red">
<script>
$(".form_datetime").datetimepicker({format: 'yyyy-mm-dd hh:ii:ss', language: 'zh-CN', autoclose: true});

//获取用户实例列表
$(function () {
$.ajax({
type: "get",
url: "/group/user_all_instances/",
dataType: "json",
data: {
type: 'all',
db_type: 'mysql'
},
complete: function () {
},
success: function (data) {
if (data.status === 0) {
let result = data['data'];
$("#instance_name").empty();
for (let i = 0; i < result.length; i++) {
let instance = "<option value=\"" + result[i]['instance_name'] + "\">" + result[i]['instance_name'] + "</option>";
$("#instance_name").append(instance);
}
$('#instance_name').selectpicker('render');
$('#instance_name').selectpicker('refresh');
} else {
alert(data.msg);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
});

//实例变更获取数据库\BINLOG
$("#instance_name").change(function () {
//获取db_name
Expand Down
51 changes: 39 additions & 12 deletions sql/templates/dbdiagnostic.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,6 @@
<select id=instance_name class="form-control selectpicker" name="instance_name_list"
title="请选择实例:"
data-live-search="true">
{% for instance_name in instances %}
<option value="{{ instance_name }}">{{ instance_name }}</option>
{% endfor %}
</select>
</div>
<div id="command-div" class="form-group">
Expand Down Expand Up @@ -476,18 +473,48 @@ <h4 class="modal-title text-danger">确定要终止所选会话吗?</h4>
}
}

//如果已选择instance_name进入页面自动填充并且重置激活id

$(document).ready(function () {
sessionStorage.setItem('diagnostic_active_li_id', 'process_tab');
if (sessionStorage.getItem('diagnostic_instance_name')) {
$("#instance_name").val(sessionStorage.getItem('diagnostic_instance_name'));
get_process_list();
$("#command-div").show();
$("#process-toolbar").show();
}
//获取用户实例列表
$(function () {
$.ajax({
type: "get",
url: "/group/user_all_instances/",
dataType: "json",
data: {
type: 'all',
db_type: 'mysql'
},
complete: function () {
//如果已选择instance_name进入页面自动填充并且重置激活id
sessionStorage.setItem('diagnostic_active_li_id', 'process_tab');
if (sessionStorage.getItem('diagnostic_instance_name')) {
$("#instance_name").val(sessionStorage.getItem('diagnostic_instance_name')).trigger("change");
$("#command-div").show();
$("#process-toolbar").show();
}
},
success: function (data) {
if (data.status === 0) {
let result = data['data'];
$("#instance_name").empty();
for (let i = 0; i < result.length; i++) {
let instance = "<option value=\"" + result[i]['instance_name'] + "\">" + result[i]['instance_name'] + "</option>";
$("#instance_name").append(instance);
}
$('#instance_name').selectpicker('render');
$('#instance_name').selectpicker('refresh');
} else {
alert(data.msg);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
});
}
);

//tab切换,保留当前激活的标签id
$(function () {
$("#nav-tabs").on('shown.bs.tab', "li", function (e) {
Expand Down
50 changes: 40 additions & 10 deletions sql/templates/param.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,9 @@
</div>
<div class="form-group ">
<select id=instance class="form-control selectpicker" name="instance_list"
title="请选择实例"
data-live-search="true">
<option value="is-empty" disabled="" selected="selected">请选择实例</option>
{% for ins in instances %}
<option value="{{ ins.id }}">{{ ins.instance_name }}</option>
{% endfor %}
</select>
</div>
</div>
Expand Down Expand Up @@ -257,19 +255,51 @@

//如果已选择实例进入页面自动填充并且重置激活id
$(document).ready(function () {
sessionStorage.setItem('active_li_id', 'param_tab');
if (sessionStorage.getItem('instance_id')) {
$("#instance").val(sessionStorage.getItem('instance_id'));
}
get_param_list();
//获取用户实例列表
$(function () {
$.ajax({
type: "get",
url: "/group/user_all_instances/",
dataType: "json",
data: {
type: 'all',
db_type: 'mysql'
},
complete: function () {
//如果已选择实例进入页面自动填充并且重置激活id
sessionStorage.setItem('param_active_li_id', 'param_tab');
if (sessionStorage.getItem('instance_id')) {
$("#instance").val(sessionStorage.getItem('instance_id')).trigger("change");
}
get_param_list();
},
success: function (data) {
if (data.status === 0) {
let result = data['data'];
$("#instance").empty();
for (let i = 0; i < result.length; i++) {
let instance = "<option value=\"" + result[i]['id'] + "\">" + result[i]['instance_name'] + "</option>";
$("#instance").append(instance);
}
$('#instance').selectpicker('render');
$('#instance').selectpicker('refresh');
} else {
alert(data.msg);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
});
}
);

//tab切换,保留当前激活的标签id
$(function () {
$("#nav-tabs").on('shown.bs.tab', "li", function (e) {
var active_li_id = $(e.target).parents().attr('id');
sessionStorage.setItem('active_li_id', active_li_id);
sessionStorage.setItem('param_active_li_id', active_li_id);
//当前激活的标签id
if (active_li_id === 'param_tab') {
get_param_list();
Expand All @@ -292,7 +322,7 @@
//刷新页面
function flush() {
sessionStorage.setItem('instance_id', $("#instance").val());
var active_li_id = sessionStorage.getItem('active_li_id');
var active_li_id = sessionStorage.getItem('param_active_li_id');
if (active_li_id === 'param_tab') {
get_param_list();
} else if (active_li_id === 'history_tab') {
Expand Down
42 changes: 36 additions & 6 deletions sql/templates/schemasync.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@
class="selectpicker show-tick form-control bs-select-hidden" data-live-search="true"
title="请选择源实例:"
data-placeholder="请选择实例:" required>
{% for instance in instances %}
<option value="{{ instance }}">{{ instance }}</option>
{% endfor %}
</select>
</div>
<div class="form-group">
Expand All @@ -30,9 +27,6 @@
class="selectpicker show-tick form-control bs-select-hidden" data-live-search="true"
title="请选择目标实例:"
data-placeholder="请选择目标实例:" required>
{% for instance in instances %}
<option value="{{ instance }}">{{ instance }}</option>
{% endfor %}
</select>
</div>
<div class="form-group">
Expand Down Expand Up @@ -88,6 +82,42 @@ <h5 class="control-label text-bold" style="color: red">
{% load staticfiles %}
<!-- 选择同步数据 -->
<script>
//获取用户实例列表
$(function () {
$.ajax({
type: "get",
url: "/group/user_all_instances/",
dataType: "json",
data: {
type: 'all',
db_type: 'mysql'
},
complete: function () {
},
success: function (data) {
if (data.status === 0) {
let result = data['data'];
$("#instance_name").empty();
$("#target_instance_name").empty();
for (let i = 0; i < result.length; i++) {
let instance = "<option value=\"" + result[i]['instance_name'] + "\">" + result[i]['instance_name'] + "</option>";
$("#instance_name").append(instance);
$("#target_instance_name").append(instance);
}
$('#instance_name').selectpicker('render');
$('#instance_name').selectpicker('refresh');
$('#target_instance_name').selectpicker('render');
$('#target_instance_name').selectpicker('refresh');
} else {
alert(data.msg);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
});

//获取源数据库名称
$("#instance_name").change(function () {
//将数据通过ajax提交给获取db_name
Expand Down
Loading

0 comments on commit 7cb4413

Please sign in to comment.