diff --git a/jasset/urls.py b/jasset/urls.py index a859e209a..6fdf6f702 100644 --- a/jasset/urls.py +++ b/jasset/urls.py @@ -13,8 +13,10 @@ urlpatterns = patterns('', url(r'^idc_detail/(\d+)$', idc_detail), url(r'^idc_del/(\d+)/$', idc_del), url(r'^group_add/$', jadd_group), + url(r'^group_edit/(\d+)/$', group_edit), url(r'^group_list/$', jlist_group), - url(r'^group_detail/(\d)/$', group_detail), + url(r'^group_detail/(\d+)/$', group_detail), + url(r'^group_del_host/(\w+)/$', group_del_host), url(r'^group_del/(\d+)/$', group_del), url(r'^host_del/(\w+)/$', host_del), url(r'^host_edit/(\d+)$', host_edit), diff --git a/jasset/views.py b/jasset/views.py index 81a0c7dd3..75be2155b 100644 --- a/jasset/views.py +++ b/jasset/views.py @@ -163,7 +163,6 @@ def jlist_host(request): def host_del(request, offset): - print offset if offset == 'multi': len_list = request.POST.get("len_list") for i in range(int(len_list)): @@ -197,13 +196,11 @@ def host_edit(request, offset): j_active = request.POST.get('j_active') j_comment = request.POST.get('j_comment') j_idc = IDC.objects.get(name=j_idc) - print j_group for group in j_group: c = BisGroup.objects.get(name=group) groups.append(c) a = Asset.objects.get(id=int(offset)) - if j_type == 'M': j_user = request.POST.get('j_user') j_password = cryptor.encrypt(request.POST.get('j_password')) @@ -211,7 +208,7 @@ def host_edit(request, offset): a.port = j_port a.login_type = j_type a.idc = j_idc - a.is_active = j_active + a.is_active = int(j_active) a.comment = j_comment a.username = j_user a.password = j_password @@ -220,7 +217,7 @@ def host_edit(request, offset): a.port = j_port a.idc = j_idc a.login_type = j_type - a.is_active = j_active + a.is_active = int(j_active) a.comment = j_comment a.save() @@ -234,7 +231,6 @@ def host_edit(request, offset): def jlist_ip(request, offset): header_title, path1, path2 = u'主机详细信息 | Host Detail.', u'资产管理', u'主机详情' - print offset post = contact_list = Asset.objects.get(ip=str(offset)) return render_to_response('jasset/jlist_ip.html', locals(), context_instance=RequestContext(request)) @@ -244,8 +240,6 @@ def jadd_idc(request): if request.method == 'POST': j_idc = request.POST.get('j_idc') j_comment = request.POST.get('j_comment') - print j_idc,j_comment - if IDC.objects.filter(name=j_idc): emg = u'该IDC已存在!' return render_to_response('jasset/idc_add.html', locals(), context_instance=RequestContext(request)) @@ -269,16 +263,22 @@ def idc_del(request, offset): def jadd_group(request): header_title, path1, path2 = u'添加主机组 | Add Group', u'资产管理', u'添加主机组' + posts = Asset.objects.all() if request.method == 'POST': j_group = request.POST.get('j_group') + j_hosts = request.POST.getlist('j_hosts') j_comment = request.POST.get('j_comment') if BisGroup.objects.filter(name=j_group): emg = u'该主机组已存在!' return render_to_response('jasset/group_add.html', locals(), context_instance=RequestContext(request)) else: - smg = u'主机组%s添加成功' %j_group BisGroup.objects.create(name=j_group, comment=j_comment, type='A') + group = BisGroup.objects.get(name=j_group) + for host in j_hosts: + g = Asset.objects.get(id=host) + group.asset_set.add(g) + smg = u'主机组%s添加成功' %j_group return render_to_response('jasset/group_add.html', locals(), context_instance=RequestContext(request)) @@ -289,6 +289,28 @@ def jlist_group(request): return render_to_response('jasset/group_list.html', locals(), context_instance=RequestContext(request)) +def group_edit(request, offset): + header_title, path1, path2 = u'编辑主机组 | Edit Group', u'资产管理', u'编辑主机组' + group = BisGroup.objects.get(id=offset) + all = Asset.objects.all() + eposts = contact_list = Asset.objects.filter(bis_group=group).order_by('ip') + posts = [g for g in all if g not in eposts] + if request.method == 'POST': + j_group = request.POST.get('j_group') + j_hosts = request.POST.getlist('j_hosts') + j_comment = request.POST.get('j_comment') + + group = BisGroup.objects.get(name=j_group) + group.asset_set.clear() + for host in j_hosts: + g = Asset.objects.get(id=host) + group.asset_set.add(g) + smg = u'主机组%s修改成功' %j_group + return HttpResponseRedirect('/jasset/group_detail/%s' %offset) + + return render_to_response('jasset/group_add.html', locals(), context_instance=RequestContext(request)) + + def group_detail(request, offset): header_title, path1, path2 = u'主机组详情 | Group Detail', u'资产管理', u'主机组详情' login_types = {'L': 'LDAP', 'S': 'SSH_KEY', 'P': 'PASSWORD', 'M': 'MAP'} @@ -327,6 +349,27 @@ def idc_detail(request, offset): return render_to_response('jasset/idc_detail.html', locals(), context_instance=RequestContext(request)) +def group_del_host(request, offset): + if request.method == 'POST': + group_name = request.POST.get('group_name') + print group_name + if offset == 'group': + group = BisGroup.objects.get(name=group_name) + elif offset == 'idc': + group = IDC.objects.get(name=group_name) + len_list = request.POST.get("len_list") + for i in range(int(len_list)): + key = "id_list["+str(i)+"]" + print key + jid = request.POST.get(key) + print jid + g = Asset.objects.get(id=jid) + print g + group.asset_set.remove(g) + print 'ok' + return HttpResponseRedirect('/jasset/%s_detail/%s' %(offset, group.id)) + + def group_del(request, offset): BisGroup.objects.filter(id=offset).delete() return HttpResponseRedirect('/jasset/group_list/') diff --git a/jumpserver/views.py b/jumpserver/views.py index 44e5d1f5d..3349d8f49 100644 --- a/jumpserver/views.py +++ b/jumpserver/views.py @@ -32,7 +32,6 @@ def jasset_group_add(name, comment, type): def jasset_host_edit(j_id, j_ip, j_idc, j_port, j_type, j_group, j_active, j_comment): - print 'ok' groups = [] is_active = {u'是': '1', u'否': '2'} login_types = {'LDAP': 'L', 'SSH_KEY': 'S', 'PASSWORD': 'P', 'MAP': 'M'} diff --git a/templates/head_script.html b/templates/head_script.html index f87c0f370..8cd64fadf 100644 --- a/templates/head_script.html +++ b/templates/head_script.html @@ -1,19 +1,9 @@ - - - + + diff --git a/templates/jasset/group_add.html b/templates/jasset/group_add.html index 563978c36..8f686c3e7 100644 --- a/templates/jasset/group_add.html +++ b/templates/jasset/group_add.html @@ -6,7 +6,7 @@
@@ -24,7 +24,34 @@ {% endif %}
-
+
+
+ +
+
+ +
+ +
+
+
+ + +
+
+
+
+ +
+
@@ -36,7 +63,7 @@
- +
@@ -63,6 +90,13 @@ form.submit(); } }); + + function on_submit(id){ + $('#'+id+' option').each( + function(){ + $(this).prop('selected', true) + }) + } {% endblock %} \ No newline at end of file diff --git a/templates/jasset/group_detail.html b/templates/jasset/group_detail.html index 650404d06..76ca1e6af 100644 --- a/templates/jasset/group_detail.html +++ b/templates/jasset/group_detail.html @@ -42,8 +42,8 @@ 端口号 登录方式 所属IDC - 所属业务组 - 是否激活 + 所属业务组 + 是否激活 添加时间 备注 操作 @@ -57,7 +57,7 @@ {{ post.port }} {{ login_types|get_item:post.login_type }} {{ post.idc.name }} - {% for group in post.bis_group.all %} {{ group }} {% endfor %} + {% for group in post.bis_group.all|filter_private %} {{ group }} {% endfor %} {{ post.is_active|bool2str }} {{ post.date_added|date:"Y-m-d H:i:s" }} {{ post.comment }} @@ -128,6 +128,8 @@ function del(form) { var checkboxes = document.getElementById(form); var id_list = {}; + var group_name = $('#j_group_name').attr("value"); + console.log(group_name); var j = 0; for (var i = 0; i < checkboxes.elements.length; i++) { if (checkboxes.elements[i].type == "checkbox" && checkboxes.elements[i].checked == true && checkboxes.elements[i].value != "checkall") { @@ -135,13 +137,13 @@ j++; } } - if (confirm("确定删除")) { + if (confirm("确定从主机组中删除")) { $.ajax({ type: "POST", - url: "/jasset/host_del/", - data: {"id_list": id_list, "len_list": j}, + url: "/jasset/group_del_host/group/", + data: {"id_list": id_list, "len_list": j, "group_name": group_name}, success: function (data) { - window.open("/jasset/host_list/", "_self"); + window.open(window.location.pathname, "_self"); } }); } diff --git a/templates/jasset/group_list.html b/templates/jasset/group_list.html index 69ceff7e3..a0900ce9b 100644 --- a/templates/jasset/group_list.html +++ b/templates/jasset/group_list.html @@ -36,6 +36,7 @@ {{ post.comment }} 详情 + 编辑 删除 diff --git a/templates/jasset/idc_detail.html b/templates/jasset/idc_detail.html index c76f40b54..446c25d6f 100644 --- a/templates/jasset/idc_detail.html +++ b/templates/jasset/idc_detail.html @@ -41,7 +41,7 @@ IP地址 端口号 登录方式 - 所属IDC + 所属IDC 所属业务组 是否激活 添加时间 @@ -57,7 +57,7 @@ {{ post.port }} {{ login_types|get_item:post.login_type }} {{ post.idc.name }} - {% for group in post.bis_group.all %} {{ group }} {% endfor %} + {% for group in post.bis_group.all|filter_private %} {{ group }} {% endfor %} {{ post.is_active|bool2str }} {{ post.date_added|date:"Y-m-d H:i:s" }} {{ post.comment }} @@ -111,21 +111,24 @@ function alter(form) { selectData = GetTableDataBox(); - if (selectData[1] != 0){ + if (selectData[1] != 0) { $.ajax({ type: "post", url: "/jasset/host_edit/batch/", - data : {"editable":selectData[0],"len_table":selectData[1]}, - success: function(data){ + data: {"editable": selectData[0], "len_table": selectData[1]}, + success: function (data) { alert("修改成功"); - window.open("/jasset/host_list/","_self"); + window.open("/jasset/host_list/", "_self"); } }); } + } - function del(form) { + function del(form) { var checkboxes = document.getElementById(form); var id_list = {}; + var group_name = $('#j_group_name').attr("value"); + console.log(group_name); var j = 0; for (var i = 0; i < checkboxes.elements.length; i++) { if (checkboxes.elements[i].type == "checkbox" && checkboxes.elements[i].checked == true && checkboxes.elements[i].value != "checkall") { @@ -133,18 +136,17 @@ j++; } } - if (confirm("确定删除")) { + if (confirm("确定从该IDC中删除")) { $.ajax({ type: "POST", - url: "/jasset/host_del/", - data: {"id_list": id_list, "len_list": j}, + url: "/jasset/group_del_host/idc/", + data: {"id_list": id_list, "len_list": j, "group_name": group_name}, success: function (data) { - window.open("/jasset/host_list/", "_self"); + window.open(window.location.pathname, "_self"); } }); } } -} {% endblock %} \ No newline at end of file diff --git a/templates/nav.html b/templates/nav.html index 29cc7ff9b..e527f4ecf 100644 --- a/templates/nav.html +++ b/templates/nav.html @@ -39,7 +39,7 @@
  • 日志审计
  • diff --git a/templates/nav_li_profile.html b/templates/nav_li_profile.html index 09811e0c8..eb048c7ae 100644 --- a/templates/nav_li_profile.html +++ b/templates/nav_li_profile.html @@ -14,7 +14,7 @@
    - JS+ + JumpServer