Commit ae0c28ef authored by guanghongwei's avatar guanghongwei

--no commit message

parent 8f163eb6
from django.db import models from django.db import models
from juser.models import UserGroup from juser.models import UserGroup, DEPT
from jasset.models import BisGroup from jasset.models import Asset, BisGroup
class Perm(models.Model): class Perm(models.Model):
...@@ -13,6 +13,14 @@ class Perm(models.Model): ...@@ -13,6 +13,14 @@ class Perm(models.Model):
return '%s_%s' % (self.user_group.name, self.asset_group.name) return '%s_%s' % (self.user_group.name, self.asset_group.name)
class DeptPerm(models.Model):
dept = models.ForeignKey(DEPT)
asset = models.ForeignKey(Asset)
def __unicode__(self):
return '%s_%s' % (self.dept.name, self.asset.ip)
class CmdGroup(models.Model): class CmdGroup(models.Model):
name = models.CharField(max_length=50) name = models.CharField(max_length=50)
cmd = models.CharField(max_length=999) cmd = models.CharField(max_length=999)
......
...@@ -8,7 +8,9 @@ urlpatterns = patterns('jperm.views', ...@@ -8,7 +8,9 @@ urlpatterns = patterns('jperm.views',
(r'^perm_edit/$', 'perm_edit'), (r'^perm_edit/$', 'perm_edit'),
(r'^perm_add/$', 'perm_add'), (r'^perm_add/$', 'perm_add'),
(r'^dept_perm_edit/$', 'dept_perm_edit'),
(r'^perm_list/$', 'perm_list'), (r'^perm_list/$', 'perm_list'),
(r'^dept_perm_list/$', 'dept_perm_list'),
(r'^perm_user_detail/$', 'perm_user_detail'), (r'^perm_user_detail/$', 'perm_user_detail'),
# (r'^perm_list_ajax/$', 'perm_list_ajax'), # (r'^perm_list_ajax/$', 'perm_list_ajax'),
(r'^perm_detail/$', 'perm_detail'), (r'^perm_detail/$', 'perm_detail'),
......
...@@ -3,9 +3,9 @@ ...@@ -3,9 +3,9 @@
from django.shortcuts import render_to_response from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect, HttpResponse from django.http import HttpResponseRedirect, HttpResponse
from django.template import RequestContext from django.template import RequestContext
from juser.models import User, UserGroup from juser.models import User, UserGroup, DEPT
from jasset.models import Asset, BisGroup from jasset.models import Asset, BisGroup
from jperm.models import Perm, SudoPerm, CmdGroup from jperm.models import Perm, SudoPerm, CmdGroup, DeptPerm
from django.core.paginator import Paginator, EmptyPage, InvalidPage from django.core.paginator import Paginator, EmptyPage, InvalidPage
from django.db.models import Q from django.db.models import Q
from jumpserver.views import LDAP_ENABLE, ldap_conn, CONF, page_list_return, pages from jumpserver.views import LDAP_ENABLE, ldap_conn, CONF, page_list_return, pages
...@@ -37,7 +37,7 @@ def user_asset_cmd_groups_get(user_groups_select='', asset_groups_select='', cmd ...@@ -37,7 +37,7 @@ def user_asset_cmd_groups_get(user_groups_select='', asset_groups_select='', cmd
def perm_add(request): def perm_add(request):
header_title, path1, path2 = u'主机授权添加.', u'授权管理', u'授权添加' header_title, path1, path2 = u'主机授权添加', u'授权管理', u'授权添加'
if request.method == 'GET': if request.method == 'GET':
user_groups = UserGroup.objects.filter(id__gt=2) user_groups = UserGroup.objects.filter(id__gt=2)
...@@ -60,6 +60,32 @@ def perm_add(request): ...@@ -60,6 +60,32 @@ def perm_add(request):
return render_to_response('jperm/perm_add.html', locals(), context_instance=RequestContext(request)) return render_to_response('jperm/perm_add.html', locals(), context_instance=RequestContext(request))
def dept_add_asset(dept_list, asset_list):
for dept_id in dept_list:
dept = DEPT.objects.filter(id=dept_id)
if dept:
dept = dept[0]
for asset_id in asset_list:
asset = Asset.objects.filter(id=asset_id)
if asset:
asset = asset[0]
DeptPerm(dept=dept, asset=asset).save()
def dept_perm_edit(request):
header_title, path1, path2 = u'部门授权添加', u'授权管理', u'部门授权添加'
depts = DEPT.objects.all()
assets = Asset.objects.all()
if request.method == 'POST':
dept_select = request.POST.getlist('dept_select')
asset_select = request.POST.getlist('asset_select')
dept_add_asset(dept_select, asset_select)
msg = '添加成功'
return render_to_response('jperm/dept_perm_edit.html', locals(), context_instance=RequestContext(request))
def perm_list(request): def perm_list(request):
header_title, path1, path2 = u'主机授权', u'授权管理', u'授权详情' header_title, path1, path2 = u'主机授权', u'授权管理', u'授权详情'
keyword = request.GET.get('search', '') keyword = request.GET.get('search', '')
...@@ -71,39 +97,18 @@ def perm_list(request): ...@@ -71,39 +97,18 @@ def perm_list(request):
return render_to_response('jperm/perm_list.html', locals(), context_instance=RequestContext(request)) return render_to_response('jperm/perm_list.html', locals(), context_instance=RequestContext(request))
# def perm_list_ajax(request): def dept_perm_list(request):
# tab = request.POST.get('tab', 'tab1') header_title, path1, path2 = '查看部门', '授权管理', '部门授权'
# search = request.POST.get('search', '') keyword = request.GET.get('search')
# if keyword:
# if tab == 'tab1': contact_list = DEPT.objects.filter(Q(name__icontains=keyword) | Q(comment__icontains=keyword)).order_by('name')
# groups = contact_list = UserGroup.objects.filter(name__icontains=search).order_by('type') else:
# p = paginator = Paginator(contact_list, 10) contact_list = DEPT.objects.filter(id__gt=1)
#
# try: contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(contact_list, request)
# page = int(request.GET.get('page', '1'))
# except ValueError: return render_to_response('jperm/dept_perm_list.html', locals(), context_instance=RequestContext(request))
# page = 1
#
# try:
# contacts = paginator.page(page)
# except (EmptyPage, InvalidPage):
# contacts = paginator.page(paginator.num_pages)
#
# else:
# users = contact_list2 = User.objects.filter(name__icontains=search).order_by('id')
# p2 = paginator2 = Paginator(contact_list2, 10)
#
# try:
# page = int(request.GET.get('page', '1'))
# except ValueError:
# page = 1
#
# try:
# contacts2 = paginator2.page(page)
# except (EmptyPage, InvalidPage):
# contacts2 = paginator2.page(paginator2.num_pages)
#
# return render_to_response('jperm/perm_list_ajax.html', locals())
def perm_group_update(perm_id, user_group_id_list, asset_groups_id_list): def perm_group_update(perm_id, user_group_id_list, asset_groups_id_list):
perm = Perm.objects.filter(id=perm_id) perm = Perm.objects.filter(id=perm_id)
...@@ -145,8 +150,6 @@ def perm_edit(request): ...@@ -145,8 +150,6 @@ def perm_edit(request):
perm_id = request.POST.get('perm_id', '') perm_id = request.POST.get('perm_id', '')
user_group_id_list = request.POST.getlist('user_groups_select') user_group_id_list = request.POST.getlist('user_groups_select')
asset_group_id_list = request.POST.getlist('asset_groups_select') asset_group_id_list = request.POST.getlist('asset_groups_select')
# return HttpResponse("perm_id: %s user_group: %s asset_group: %s" % (perm_id, repr(user_group_id_list), repr(asset_group_id_list) ))
# return HttpResponse(perm_group_update(perm_id, user_group_id_list, asset_group_id_list))
perm_group_update(perm_id, user_group_id_list, asset_group_id_list) perm_group_update(perm_id, user_group_id_list, asset_group_id_list)
return HttpResponseRedirect('/jperm/perm_list/') return HttpResponseRedirect('/jperm/perm_list/')
......
{% extends 'base.html' %}
{% load mytags %}
{% block content %}
{% include 'nav_cat_bar.html' %}
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-lg-10">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5> 部门授权添加 </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>
<ul class="dropdown-menu dropdown-user">
<li><a href="#">未启用 1</a>
</li>
<li><a href="#">未启用 2</a>
</li>
</ul>
<a class="close-link">
<i class="fa fa-times"></i>
</a>
</div>
</div>
<div class="ibox-content">
<form id="sudoPerm" method="post" class="form-horizontal" action="">
{% if error %}
<div class="alert alert-warning text-center">{{ error }}</div>
{% endif %}
{% if msg %}
<div class="alert alert-success text-center">{{ msg }}</div>
{% endif %}
<div class="row">
<div class="form-group">
<label for="" class="col-sm-2 control-label">部门<span class="red-fonts">*</span></label>
<div class="col-sm-4">
<div>
<select id="depts" name="depts" class="form-control" size="12" multiple>
{% for dept in depts %}
<option value="{{ dept.id }}">{{ dept.name }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="col-sm-1">
<div class="btn-group" style="margin-top: 60px;">
<button type="button" class="btn btn-white" onclick="move('depts', 'dept_select')"><i class="fa fa-chevron-right"></i></button>
<button type="button" class="btn btn-white" onclick="move('dept_select', 'depts')"><i class="fa fa-chevron-left"></i> </button>
</div>
</div>
<div class="col-sm-3">
<div>
<select id="dept_select" name="dept_select" class="form-control m-b" size="12" multiple>
</select>
</div>
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<label for="" class="col-sm-2 control-label">主机<span class="red-fonts">*</span></label>
<div class="col-sm-4">
<div>
<select id="assets" name="assets" class="form-control m-b" size="12" multiple>
{% for asset in assets %}
<option value="{{ asset.id }}">{{ asset.ip }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="col-sm-1">
<div class="btn-group" style="margin-top: 60px;">
<button type="button" class="btn btn-white" onclick="move('assets', 'asset_select')"><i class="fa fa-chevron-right"></i></button>
<button type="button" class="btn btn-white" onclick="move('asset_select', 'assets')"><i class="fa fa-chevron-left"></i> </button>
</div>
</div>
<div class="col-sm-3">
<div>
<select id="asset_select" name="asset_select" class="form-control m-b" size="12" multiple>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-4 col-sm-offset-2">
<button class="btn btn-white" type="reset">取消</button>
<button id="submit_button" class="btn btn-primary" type="submit">确认保存</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<script>
$('#sudoPerm').validator({
timely: 2,
theme: "yellow_right_effect",
fields: {
"name": {
rule: "required",
tip: "输入授权名",
ok: "",
msg: {required: "必须填写!"}
},
"user_groups_select": {
rule: "required",
tip: "选择用户组",
ok: "",
msg: {checked: "至少选择一个用户组"}
},
"asset_groups_select": {
rule: "required",
tip: "选择主机组",
ok: "",
msg: {checked: "至少选择一个主机组"}
}
},
valid: function(form) {
form.submit();
}
});
$(document).ready(function(){
$("#submit_button").click(function(){
$('#users_selected option').each(function(){
$(this).prop('selected', true)
})
})
})
</script>
{% endblock %}
\ No newline at end of file
{% extends 'base.html' %}
{% load mytags %}
{% block content %}
{% include 'nav_cat_bar.html' %}
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-lg-10">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5> 查看部门 </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>
<ul class="dropdown-menu dropdown-user">
<li><a href="#">未启用 1</a>
</li>
<li><a href="#">未启用 2</a>
</li>
</ul>
<a class="close-link">
<i class="fa fa-times"></i>
</a>
</div>
</div>
<div class="ibox-content">
<div class="">
<a target="_blank" href="/juser/dept_add/" class="btn btn-sm btn-primary "> 添加部门 </a>
<form id="search_form" method="get" action="" class="pull-right mail-search">
<div class="input-group">
<input type="text" class="form-control input-sm" id="search_input" name="search" placeholder="Search">
<div class="input-group-btn">
<button id='search_btn' type="submit" class="btn btn-sm btn-primary">
Search
</button>
</div>
</div>
</form>
</div>
<table class="table table-striped table-bordered table-hover " id="editable" >
<thead>
<tr>
<th class="text-center">部门名称</th>
<th class="text-center">成员数量</th>
<th class="text-center">授权主机数量</th>
<th class="text-center">备注</th>
<th class="text-center">操作</th>
</tr>
</thead>
<tbody>
{% for dept in contacts.object_list %}
<tr class="gradeX">
<td class="text-center"> {{ dept.name }} </td>
<td class="text-center"> {{ dept.id | dept_member }} </td>
<td class="text-center"> {{ dept.id | dept_member }} </td>
<td class="text-center"> {{ dept.comment }} </td>
<td class="text-center">
<a title="[ {{ dept.name }} ] 成员信息" href="../dept_detail/?id={{ dept.id }}" class="iframe btn btn-xs btn-primary">主机</a>
<a href="../dept_perm_edit/?id={{ dept.id }}" class="btn btn-xs btn-info">授权编辑</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="row">
<div class="col-sm-6">
<div class="dataTables_info" id="editable_info" role="status" aria-live="polite">
Showing {{ contacts.start_index }} to {{ contacts.end_index }} of {{ p.count }} entries
</div>
</div>
{% include 'paginator.html' %}
</div>
</div>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function(){
$(".iframe").colorbox({iframe:true, width:"70%", height:"70%"});
var check_array = []
$('#del_btn').click(function(){
$(".gradeX input:checked").each(function() {check_array.push($(this).attr("value")) })
$(".gradeX input:checked").closest("tr").remove()
$.post("/juser/dept_del_ajax/",
{dept_ids: check_array.join(",")},
function(data){
alert(data)
}
)
})
});
</script>
{% endblock %}
\ No newline at end of file
...@@ -50,9 +50,9 @@ ...@@ -50,9 +50,9 @@
<label for="" class="col-sm-2 control-label">用户组<span class="red-fonts">*</span></label> <label for="" class="col-sm-2 control-label">用户组<span class="red-fonts">*</span></label>
<div class="col-sm-4"> <div class="col-sm-4">
<div> <div>
<select id="user_groups" name="user_groups" class="form-control" size="5" multiple> <select id="user_groups" name="user_groups" class="form-control" size="10" multiple>
{% for user_group in user_groups %} {% for user_group in user_groups %}
<option value="{{ user_group.id }}">{{ user_group.name }} --- {{ user_group.type|group_type_to_str }}</option> <option value="{{ user_group.id }}">{{ user_group.name }}</option>
{% endfor %} {% endfor %}
</select> </select>
</div> </div>
...@@ -80,7 +80,7 @@ ...@@ -80,7 +80,7 @@
<label for="" class="col-sm-2 control-label">主机组<span class="red-fonts">*</span></label> <label for="" class="col-sm-2 control-label">主机组<span class="red-fonts">*</span></label>
<div class="col-sm-4"> <div class="col-sm-4">
<div> <div>
<select id="asset_groups" name="asset_groups" class="form-control m-b" size="5" multiple> <select id="asset_groups" name="asset_groups" class="form-control m-b" size="10" multiple>
{% for asset_group in asset_groups %} {% for asset_group in asset_groups %}
<option value="{{ asset_group.id }}">{{ asset_group.name }}</option> <option value="{{ asset_group.id }}">{{ asset_group.name }}</option>
{% endfor %} {% endfor %}
......
...@@ -36,6 +36,12 @@ ...@@ -36,6 +36,12 @@
<li id="jperm"> <li id="jperm">
<a href="#"><i class="fa fa-edit"></i> <span class="nav-label">授权管理</span><span class="fa arrow"></span></a> <a href="#"><i class="fa fa-edit"></i> <span class="nav-label">授权管理</span><span class="fa arrow"></span></a>
<ul class="nav nav-second-level"> <ul class="nav nav-second-level">
<li id="dept_perm_add">
<a href="/jperm/dept_perm_add/">部门授权</a>
</li>
<li id="dept_perm_list">
<a href="/jperm/dept_perm_list/">授权查看</a>
</li>
<li id="perm_add"> <li id="perm_add">
<a href="/jperm/perm_add/">授权添加</a> <a href="/jperm/perm_add/">授权添加</a>
</li> </li>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment