mirror of https://github.com/jumpserver/jumpserver
主机授权更改
parent
97038aab37
commit
f050866d94
|
@ -4,8 +4,10 @@ from jasset.models import BisGroup
|
|||
|
||||
|
||||
class Perm(models.Model):
|
||||
user_group = models.ForeignKey(UserGroup)
|
||||
asset_group = models.ForeignKey(BisGroup)
|
||||
name = models.CharField(max_length=100)
|
||||
user_group = models.ManyToManyField(UserGroup)
|
||||
asset_group = models.ManyToManyField(BisGroup)
|
||||
comment = models.CharField(max_length=100)
|
||||
|
||||
def __unicode__(self):
|
||||
return '%s_%s' % (self.user_group.name, self.asset_group.name)
|
||||
|
@ -16,6 +18,9 @@ class CmdGroup(models.Model):
|
|||
cmd = models.CharField(max_length=999)
|
||||
comment = models.CharField(blank=True, null=True, max_length=50)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class SudoPerm(models.Model):
|
||||
name = models.CharField(max_length=20)
|
||||
|
@ -23,4 +28,7 @@ class SudoPerm(models.Model):
|
|||
user_group = models.ManyToManyField(UserGroup)
|
||||
asset_group = models.ManyToManyField(BisGroup)
|
||||
cmd_group = models.ManyToManyField(CmdGroup)
|
||||
comment = models.CharField(max_length=30, null=True, blank=True)
|
||||
comment = models.CharField(max_length=30, null=True, blank=True)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
|
@ -7,6 +7,7 @@ urlpatterns = patterns('jperm.views',
|
|||
# url(r'^blog/', include('blog.urls')),
|
||||
|
||||
(r'^perm_edit/$', 'perm_edit'),
|
||||
(r'^perm_add/$', 'perm_add'),
|
||||
(r'^perm_list/$', 'perm_list'),
|
||||
(r'^perm_list_ajax/$', 'perm_list_ajax'),
|
||||
(r'^perm_detail/$', 'perm_detail'),
|
||||
|
|
|
@ -56,7 +56,7 @@ def perm_user_asset(user_id=None, username=None):
|
|||
|
||||
def perm_list(request):
|
||||
header_title, path1, path2 = u'涓绘満鎺堟潈 | Perm Host Detail.', u'鎺堟潈绠$悊', u'鎺堟潈璇︽儏'
|
||||
groups = contact_list = UserGroup.objects.all().order_by('type')
|
||||
groups = contact_list = Perm.objects.all()
|
||||
users = contact_list2 = User.objects.all().order_by('id')
|
||||
p = paginator = Paginator(contact_list, 10)
|
||||
p2 = paginator2 = Paginator(contact_list2, 10)
|
||||
|
@ -74,6 +74,47 @@ def perm_list(request):
|
|||
return render_to_response('jperm/perm_list.html', locals())
|
||||
|
||||
|
||||
def user_asset_cmd_groups_get(user_groups_select='', asset_groups_select='', cmd_groups_select=''):
|
||||
user_groups_select_list = []
|
||||
asset_groups_select_list = []
|
||||
cmd_groups_select_list = []
|
||||
|
||||
for user_group_id in user_groups_select:
|
||||
user_groups_select_list.append(UserGroup.objects.get(id=user_group_id))
|
||||
|
||||
for asset_group_id in asset_groups_select:
|
||||
asset_groups_select_list.append(BisGroup.objects.get(id=asset_group_id))
|
||||
|
||||
for cmd_group_id in cmd_groups_select:
|
||||
cmd_groups_select_list.append(CmdGroup.objects.get(id=cmd_group_id))
|
||||
|
||||
return user_groups_select_list, asset_groups_select_list, cmd_groups_select_list
|
||||
|
||||
|
||||
def perm_add(request):
|
||||
header_title, path1, path2 = u'涓绘満鎺堟潈娣诲姞 | Perm Add Detail.', u'鎺堟潈绠$悊', u'鎺堟潈娣诲姞'
|
||||
|
||||
if request.method == 'GET':
|
||||
user_groups = UserGroup.objects.filter(Q(type='A') | Q(type='M')).order_by('type')
|
||||
asset_groups = BisGroup.objects.all()
|
||||
|
||||
else:
|
||||
name = request.POST.get('name', '')
|
||||
user_groups_select = request.POST.getlist('user_groups_select')
|
||||
asset_groups_select = request.POST.getlist('asset_groups_select')
|
||||
comment = request.POST.get('comment', '')
|
||||
|
||||
user_groups, asset_groups = user_asset_cmd_groups_get(user_groups_select, asset_groups_select, '')[0:2]
|
||||
|
||||
perm = Perm(name=name, comment=comment)
|
||||
perm.save()
|
||||
|
||||
perm.user_group = user_groups
|
||||
perm.asset_group = asset_groups
|
||||
msg = '娣诲姞鎴愬姛'
|
||||
return render_to_response('jperm/perm_add.html', locals())
|
||||
|
||||
|
||||
def perm_list_ajax(request):
|
||||
tab = request.POST.get('tab', 'tab1')
|
||||
search = request.POST.get('search', '')
|
||||
|
@ -112,17 +153,26 @@ def perm_list_ajax(request):
|
|||
def perm_edit(request):
|
||||
if request.method == 'GET':
|
||||
header_title, path1, path2 = u'缂栬緫鎺堟潈 | Perm Host Edit.', u'鎺堟潈绠$悊', u'鎺堟潈缂栬緫'
|
||||
user_group_id = request.GET.get('id')
|
||||
user_group = UserGroup.objects.get(id=user_group_id)
|
||||
asset_groups = BisGroup.objects.all()
|
||||
asset_groups_permed = [perm.asset_group for perm in user_group.perm_set.all()]
|
||||
asset_groups_unperm = [asset_group for asset_group in asset_groups if asset_group not in asset_groups_permed]
|
||||
return render_to_response('jperm/perm_edit.html', locals())
|
||||
perm_id = request.GET.get('id')
|
||||
perm = Perm.objects.filter(id=perm_id)
|
||||
if perm:
|
||||
perm = perm[0]
|
||||
name = perm.name
|
||||
comment = perm.comment
|
||||
user_groups_select = perm.user_group.all()
|
||||
asset_groups_select = perm.asset_group.all()
|
||||
|
||||
user_groups_all = UserGroup.objects.filter(Q(type='A') | Q(type='M'))
|
||||
asset_groups_all = BisGroup.objects.all()
|
||||
|
||||
user_groups = [user_group for user_group in user_groups_all if user_group not in user_groups_select]
|
||||
asset_groups = [asset_group for asset_group in asset_groups_all if asset_group not in asset_groups_select]
|
||||
else:
|
||||
user_group_name = request.POST.get('user_group_name')
|
||||
asset_groups_selected = request.POST.getlist('asset_group_permed')
|
||||
perm_group_update(user_group_name=user_group_name, asset_groups_id=asset_groups_selected)
|
||||
return HttpResponseRedirect('/jperm/perm_list/')
|
||||
return HttpResponseRedirect('/jperm/perm_list/', locals())
|
||||
return render_to_response('jperm/perm_edit.html', locals())
|
||||
|
||||
|
||||
def perm_detail(request):
|
||||
|
@ -146,23 +196,6 @@ def perm_asset_detail(request):
|
|||
return render_to_response('jperm/perm_asset_detail.html', locals())
|
||||
|
||||
|
||||
def user_asset_cmd_groups_get(user_groups_select, asset_groups_select, cmd_groups_select):
|
||||
user_groups_select_list = []
|
||||
asset_groups_select_list = []
|
||||
cmd_groups_select_list = []
|
||||
|
||||
for user_group_id in user_groups_select:
|
||||
user_groups_select_list.append(UserGroup.objects.get(id=user_group_id))
|
||||
|
||||
for asset_group_id in asset_groups_select:
|
||||
asset_groups_select_list.append(BisGroup.objects.get(id=asset_group_id))
|
||||
|
||||
for cmd_group_id in cmd_groups_select:
|
||||
cmd_groups_select_list.append(CmdGroup.objects.get(id=cmd_group_id))
|
||||
|
||||
return user_groups_select_list, asset_groups_select_list, cmd_groups_select_list
|
||||
|
||||
|
||||
def sudo_db_add(name, user_runas, user_groups_select, asset_groups_select, cmd_groups_select, comment):
|
||||
user_groups_select_list, asset_groups_select_list, cmd_groups_select_list = \
|
||||
user_asset_cmd_groups_get(user_groups_select, asset_groups_select, cmd_groups_select)
|
||||
|
|
|
@ -1,68 +1,173 @@
|
|||
{% 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>娣诲姞鎺堟潈 {{ user.name }} <small> Add perm info.</small></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>
|
||||
{% 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> 涓绘満鎺堟潈 <small> Perm Add info.</small> </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 class="ibox-content">
|
||||
<form 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>
|
||||
|
||||
<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="name" class="col-sm-2 control-label">鎺堟潈鍚<span class="red-fonts">*</span></label>
|
||||
<div class="col-sm-8">
|
||||
<input name="username" value="{{ user.username }}" hidden="hidden">
|
||||
<input id="name" name="name" placeholder="鎺堟潈鍚嶇О" type="text" class="form-control">
|
||||
<span class="help-block m-b-none">鍙栦釜鍚嶅瓧鏂逛究杈ㄨ瘑</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-8">
|
||||
<select id="host_ids" name="host_ids" multiple style="width: 100%">
|
||||
{% for host in hosts %}
|
||||
<option value="{{ host.id }}">{{ host.ip }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<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="user_groups" name="user_groups" class="form-control" size="5" multiple>
|
||||
{% for user_group in user_groups %}
|
||||
<option value="{{ user_group.id }}">{{ user_group.name }} --- {{ user_group.type|group_type_to_str }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-sm-1">
|
||||
<div class="btn-group" style="margin-top: 12px;">
|
||||
<button type="button" class="btn btn-white" onclick="move('user_groups', 'user_groups_select')"><i class="fa fa-chevron-right"></i></button>
|
||||
<button type="button" class="btn btn-white" onclick="move('user_groups_select', 'user_groups')"><i class="fa fa-chevron-left"></i> </button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-3">
|
||||
<div>
|
||||
<select id="user_groups_select" name="user_groups_select" class="form-control m-b" size="5" 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="asset_groups" name="asset_groups" class="form-control m-b" size="5" multiple>
|
||||
{% for asset_group in asset_groups %}
|
||||
<option value="{{ asset_group.id }}">{{ asset_group.name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-1">
|
||||
<div class="btn-group" style="margin-top: 12px;">
|
||||
<button type="button" class="btn btn-white" onclick="move('asset_groups', 'asset_groups_select')"><i class="fa fa-chevron-right"></i></button>
|
||||
<button type="button" class="btn btn-white" onclick="move('asset_groups_select', 'asset_groups')"><i class="fa fa-chevron-left"></i> </button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-3">
|
||||
<div>
|
||||
<select id="asset_groups_select" name="asset_groups_select" class="form-control m-b" size="5" multiple>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="hr-line-dashed"></div>
|
||||
<div class="form-group">
|
||||
<label for="group_name" class="col-sm-2 control-label">澶囨敞</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="comment" name="comment" placeholder="澶囨敞璇存槑" type="text" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
<div class="hr-line-dashed"></div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="form-group">
|
||||
<div class="col-sm-4 col-sm-offset-2">
|
||||
<button class="btn btn-white" type="submit">鍙栨秷</button>
|
||||
<button class="btn btn-white" type="reset">鍙栨秷</button>
|
||||
<button id="submit_button" class="btn btn-primary" type="submit">纭淇濆瓨</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</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 %}
|
|
@ -1,84 +1,91 @@
|
|||
{% extends 'base.html' %}
|
||||
{% load mytags %}
|
||||
|
||||
{% block content %}
|
||||
<script type="text/javascript">
|
||||
{% include 'nav_cat_bar.html' %}
|
||||
|
||||
|
||||
function search_host(text){
|
||||
$("#asset_group_unperm").children().each(function(){$(this).remove();});
|
||||
var permArray = [];
|
||||
$("#asset_group_permed").children().each(function(){
|
||||
permArray.push($(this).text());
|
||||
});
|
||||
$("#asset_groups").children().each(function(){
|
||||
if ($(this).text().search(text) != -1 && permArray.indexOf($(this).text()) == -1) {
|
||||
$("#asset_group_unperm").append($(this).clone())
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
{% 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">
|
||||
<!-- title -->
|
||||
<div class="ibox-title">
|
||||
<h5>鎺堟潈缂栬緫琛ㄥ崟 <small>Edit perm of Group</small></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="#">Config option 1</a>
|
||||
</li>
|
||||
<li><a href="#">Config option 2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
<i class="fa fa-times"></i>
|
||||
</a>
|
||||
</div>
|
||||
<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> 涓绘満鎺堟潈 <small> Perm Add info.</small> </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>
|
||||
<!-- end title -->
|
||||
<div class="ibox-content">
|
||||
<div class="row">
|
||||
<div class="col-sm-5 ">
|
||||
<div class="form-group">
|
||||
<label></label>
|
||||
<input type="text" id="group_filter" placeholder="Search" class="form-control" value="" oninput="search_host(this.value)">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-1 ">
|
||||
<div class="form-group">
|
||||
<label></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-5 ">
|
||||
<div class="form-group">
|
||||
<label></label>
|
||||
<input type="text" class="form-control" value="{{ user_group.name }}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form method="post" action="">
|
||||
<input type="text" name="user_group_name" class="form-control" value="{{ user_group.name }}" style="display: none">
|
||||
<div class="row">
|
||||
<div class="col-sm-5"><h4>鏈巿鏉冧富鏈虹粍</h4>
|
||||
<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="name" class="col-sm-2 control-label">鎺堟潈鍚<span class="red-fonts">*</span></label>
|
||||
<div class="col-sm-8">
|
||||
<input id="name" name="name" placeholder="鎺堟潈鍚嶇О" type="text" class="form-control" value="{{ name }}">
|
||||
<input id="perm_id" name="perm_id" placeholder="鎺堟潈鍚嶇О" type="text" class="form-control" style="display: none" value="{{ perm_id }}">
|
||||
<span class="help-block m-b-none">鍙栦釜鍚嶅瓧鏂逛究杈ㄨ瘑</span>
|
||||
</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="asset_groups" name="asset_groups" class="form-control" size="10" multiple style="display: none">
|
||||
{% for asset_group in asset_groups %}
|
||||
<option value="{{ asset_group.id }}">{{ asset_group.name }}</option>
|
||||
<select id="user_groups" name="user_groups" class="form-control" size="5" multiple>
|
||||
{% for user_group in user_groups %}
|
||||
<option value="{{ user_group.id }}">{{ user_group.name }} --- {{ user_group.type|group_type_to_str }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<select id="asset_group_unperm" name="asset_group_unperm" class="form-control m-b" size="12" multiple>
|
||||
{% for asset_group in asset_groups_unperm %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-sm-1">
|
||||
<div class="btn-group" style="margin-top: 12px;">
|
||||
<button type="button" class="btn btn-white" onclick="move('user_groups', 'user_groups_select')"><i class="fa fa-chevron-right"></i></button>
|
||||
<button type="button" class="btn btn-white" onclick="move('user_groups_select', 'user_groups')"><i class="fa fa-chevron-left"></i> </button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-3">
|
||||
<div>
|
||||
<select id="user_groups_select" name="user_groups_select" class="form-control m-b" size="5" multiple>
|
||||
{% for user_group in user_groups_select %}
|
||||
<option value="{{ user_group.id }}">{{ user_group.name }} --- {{ user_group.type|group_type_to_str }}</option>
|
||||
{% endfor %}
|
||||
</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="asset_groups" name="asset_groups" class="form-control m-b" size="5" multiple>
|
||||
{% for asset_group in asset_groups %}
|
||||
<option value="{{ asset_group.id }}">{{ asset_group.name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
|
@ -86,53 +93,88 @@
|
|||
</div>
|
||||
|
||||
<div class="col-sm-1">
|
||||
<div class="btn-group" style="margin-top: 50px;">
|
||||
<button type="button" class="btn btn-white" onclick="move('asset_group_unperm', 'asset_group_permed')"><i class="fa fa-chevron-right"></i></button>
|
||||
<button type="button" class="btn btn-white" onclick="move('asset_group_permed', 'asset_group_unperm')"><i class="fa fa-chevron-left"></i> </button>
|
||||
<div class="btn-group" style="margin-top: 12px;">
|
||||
<button type="button" class="btn btn-white" onclick="move('asset_groups', 'asset_groups_select')"><i class="fa fa-chevron-right"></i></button>
|
||||
<button type="button" class="btn btn-white" onclick="move('asset_groups_select', 'asset_groups')"><i class="fa fa-chevron-left"></i> </button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-5"><h4>鎺堟潈涓绘満</h4>
|
||||
<div class="col-sm-3">
|
||||
<div>
|
||||
<select id="asset_group_permed" name="asset_group_permed" class="form-control m-b" size="12" multiple>
|
||||
{% for asset_group in asset_groups_permed %}
|
||||
<option value="{{ asset_group.id }}">{{ asset_group.name }}</option>
|
||||
{% endfor %}
|
||||
<select id="asset_groups_select" name="asset_groups_select" class="form-control m-b" size="5" multiple>
|
||||
{% for asset_group in asset_groups_select %}
|
||||
<option value="{{ asset_group.id }}">{{ asset_group.name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</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="submit">鍙栨秷</button>
|
||||
<button class="btn btn-primary" type="submit" onclick="javascript: (function(){$('#asset_group_permed option').each(function(){$(this).prop('selected', true)})})()">纭淇濆瓨</button>
|
||||
</div>
|
||||
|
||||
<div class="hr-line-dashed"></div>
|
||||
<div class="form-group">
|
||||
<label for="group_name" class="col-sm-2 control-label">澶囨敞</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="comment" name="comment" placeholder="澶囨敞璇存槑" type="text" class="form-control" value="{{ comment }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="hr-line-dashed"></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>
|
||||
var str = document.location.pathname.split("/")[1];
|
||||
var str1 = document.location.pathname.split("/")[2];
|
||||
$("#"+str).addClass('active');
|
||||
$("#"+str1).addClass('active');
|
||||
</script>
|
||||
{# <script type="text/javascript">#}
|
||||
{# $("#asset_group_permed").children().each(function(){#}
|
||||
{# $("#asset_groups").append($(this).clone());#}
|
||||
{##}
|
||||
{# if ($(this).prop("selected") == false) {#}
|
||||
{# $("#asset_group_unperm").append(this);#}
|
||||
{# }#}
|
||||
{##}
|
||||
{# $("#asset_groups").children().each(function(){$(this).prop("selected", false)});#}
|
||||
{# });#}
|
||||
{# </script>#}
|
||||
</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 %}
|
|
@ -0,0 +1,138 @@
|
|||
{% extends 'base.html' %}
|
||||
{% load mytags %}
|
||||
|
||||
{% block content %}
|
||||
<script type="text/javascript">
|
||||
|
||||
|
||||
function search_host(text){
|
||||
$("#asset_group_unperm").children().each(function(){$(this).remove();});
|
||||
var permArray = [];
|
||||
$("#asset_group_permed").children().each(function(){
|
||||
permArray.push($(this).text());
|
||||
});
|
||||
$("#asset_groups").children().each(function(){
|
||||
if ($(this).text().search(text) != -1 && permArray.indexOf($(this).text()) == -1) {
|
||||
$("#asset_group_unperm").append($(this).clone())
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
{% 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">
|
||||
<!-- title -->
|
||||
<div class="ibox-title">
|
||||
<h5>鎺堟潈缂栬緫琛ㄥ崟 <small>Edit perm of Group</small></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="#">Config option 1</a>
|
||||
</li>
|
||||
<li><a href="#">Config option 2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
<i class="fa fa-times"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end title -->
|
||||
<div class="ibox-content">
|
||||
<div class="row">
|
||||
<div class="col-sm-5 ">
|
||||
<div class="form-group">
|
||||
<label></label>
|
||||
<input type="text" id="group_filter" placeholder="Search" class="form-control" value="" oninput="search_host(this.value)">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-1 ">
|
||||
<div class="form-group">
|
||||
<label></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-5 ">
|
||||
<div class="form-group">
|
||||
<label></label>
|
||||
<input type="text" class="form-control" value="{{ user_group.name }}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form method="post" action="">
|
||||
<input type="text" name="user_group_name" class="form-control" value="{{ user_group.name }}" style="display: none">
|
||||
<div class="row">
|
||||
<div class="col-sm-5"><h4>鏈巿鏉冧富鏈虹粍</h4>
|
||||
<div>
|
||||
<select id="asset_groups" name="asset_groups" class="form-control" size="10" multiple style="display: none">
|
||||
{% for asset_group in asset_groups %}
|
||||
<option value="{{ asset_group.id }}">{{ asset_group.name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<select id="asset_group_unperm" name="asset_group_unperm" class="form-control m-b" size="12" multiple>
|
||||
{% for asset_group in asset_groups_unperm %}
|
||||
<option value="{{ asset_group.id }}">{{ asset_group.name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-1">
|
||||
<div class="btn-group" style="margin-top: 50px;">
|
||||
<button type="button" class="btn btn-white" onclick="move('asset_group_unperm', 'asset_group_permed')"><i class="fa fa-chevron-right"></i></button>
|
||||
<button type="button" class="btn btn-white" onclick="move('asset_group_permed', 'asset_group_unperm')"><i class="fa fa-chevron-left"></i> </button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-5"><h4>鎺堟潈涓绘満</h4>
|
||||
<div>
|
||||
<select id="asset_group_permed" name="asset_group_permed" class="form-control m-b" size="12" multiple>
|
||||
{% for asset_group in asset_groups_permed %}
|
||||
<option value="{{ asset_group.id }}">{{ asset_group.name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</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="submit">鍙栨秷</button>
|
||||
<button class="btn btn-primary" type="submit" onclick="javascript: (function(){$('#asset_group_permed option').each(function(){$(this).prop('selected', true)})})()">纭淇濆瓨</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var str = document.location.pathname.split("/")[1];
|
||||
var str1 = document.location.pathname.split("/")[2];
|
||||
$("#"+str).addClass('active');
|
||||
$("#"+str1).addClass('active');
|
||||
</script>
|
||||
{# <script type="text/javascript">#}
|
||||
{# $("#asset_group_permed").children().each(function(){#}
|
||||
{# $("#asset_groups").append($(this).clone());#}
|
||||
{##}
|
||||
{# if ($(this).prop("selected") == false) {#}
|
||||
{# $("#asset_group_unperm").append(this);#}
|
||||
{# }#}
|
||||
{##}
|
||||
{# $("#asset_groups").children().each(function(){$(this).prop("selected", false)});#}
|
||||
{# });#}
|
||||
{# </script>#}
|
||||
|
||||
{% endblock %}
|
|
@ -33,8 +33,8 @@
|
|||
<div class="panel-heading">
|
||||
<div class="panel-options">
|
||||
<ul class="nav nav-tabs">
|
||||
<li id="tab1" class="active"><a data-toggle="tab" href="#tab-1">鎺堟潈缂栬緫</a></li>
|
||||
<li id="tab2" class=""><a data-toggle="tab" href="#tab-2">鏌ョ湅鎺堟潈</a></li>
|
||||
<li id="tab1" class="active"><a data-toggle="tab" href="#tab-1">鎺堟潈鏌ョ湅</a></li>
|
||||
<li id="tab2" class=""><a data-toggle="tab" href="#tab-2">鐢ㄦ埛鎺堟潈璇︽儏</a></li>
|
||||
<li style="float: right">
|
||||
<form method="get" action="" class="pull-right mail-search">
|
||||
<div class="input-group">
|
||||
|
@ -58,26 +58,32 @@
|
|||
<table class="table table-striped table-bordered table-hover " id="editable" >
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-center">缁勫悕</th>
|
||||
<th class="text-center">
|
||||
<span class="text-muted text-xs block">绫诲瀷</span>
|
||||
</th>
|
||||
<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>
|
||||
<th class="text-center">澶囨敞</th>
|
||||
<th class="text-center">鎿嶄綔</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="perm_edit">
|
||||
{% for group in contacts.object_list %}
|
||||
{% for perm in contacts.object_list %}
|
||||
<tr class="gradeX">
|
||||
<td class="text-center"> {{ group.name }} </td>
|
||||
<td class="text-center"> {{ group.type|group_type_to_str }} </td>
|
||||
<td class="text-center"> {{ group.id|member_count }} </td>
|
||||
<td class="text-center"> {{ group.id|perm_count }} </td>
|
||||
<td class="text-center"> {{ perm.name }} </td>
|
||||
<td class="text-center">
|
||||
<a title="[ {{ group.name }} 鎺堟潈璇︽儏 ]" href="../perm_detail/?id={{ group.id }}" class="iframe btn btn-xs btn-primary">璇︽儏</a>
|
||||
<a href="../perm_edit/?id={{ group.id }}" class="btn btn-xs btn-info">缂栬緫</a>
|
||||
<a href="../perm_del/?id={{ group.id }}" class="btn btn-xs btn-danger">鍒犻櫎</a>
|
||||
{% for user_group in perm.user_group.all %}
|
||||
{{ user_group.name }}
|
||||
{% endfor %}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{% for asset_group in perm.asset_group.all %}
|
||||
{{ asset_group.name }}
|
||||
{% endfor %}
|
||||
</td>
|
||||
<td class="text-center"> {{ perm.comment }} </td>
|
||||
<td class="text-center">
|
||||
<a title="[ {{ group.name }} 鎺堟潈璇︽儏 ]" href="../perm_detail/?id={{ perm.id }}" class="iframe btn btn-xs btn-primary">璇︽儏</a>
|
||||
<a href="../perm_edit/?id={{ perm.id }}" class="btn btn-xs btn-info">缂栬緫</a>
|
||||
<a href="../perm_del/?id={{ perm.id }}" class="btn btn-xs btn-danger">鍒犻櫎</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
@ -137,11 +143,11 @@
|
|||
<tbody id="perm_list">
|
||||
{% for user in contacts2.object_list %}
|
||||
<tr class="gradeX">
|
||||
<td class="text-center"> {{ user.name }} </td>
|
||||
<td class="text-center"> {{ user.id | get_role }} </td>
|
||||
<td class="text-center"> {{ user.username | groups_str }} </td>
|
||||
<td class="text-center"> {{ user.id | perm_asset_count }} </td>
|
||||
<td class="text-center">
|
||||
{# <td class="text-center"> {{ user.name }} </td>#}
|
||||
{# <td class="text-center"> {{ user.id | get_role }} </td>#}
|
||||
{# <td class="text-center"> {{ user.username | groups_str }} </td>#}
|
||||
{# <td class="text-center"> {{ user.id | perm_asset_count }} </td>#}
|
||||
{# <td class="text-center">#}
|
||||
<a title="[ {{ user.name }} ] 鎺堟潈璇︽儏" href="../perm_asset_detail/?id={{ user.id }}" class="iframe btn btn-xs btn-primary">璇︽儏</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -32,8 +32,18 @@
|
|||
<li id="jperm">
|
||||
<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">
|
||||
<li id="perm_list"><a href="/jperm/perm_list/">涓绘満鎺堟潈</a></li>
|
||||
<li class="active">
|
||||
<li id="perm_list"><a href="/jperm/perm_list/">涓绘満鎺堟潈<span class="fa arrow"></span></a>
|
||||
<ul class="nav nav-third-level">
|
||||
<li id="perm_add">
|
||||
<a href="/jperm/perm_add/">鎺堟潈娣诲姞</a>
|
||||
</li>
|
||||
<li id="perm_list">
|
||||
<a href="/jperm/perm_list/">鎺堟潈鏌ョ湅</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#">Sudo鎺堟潈<span class="fa arrow"></span></a>
|
||||
<ul class="nav nav-third-level">
|
||||
<li id="cmd_add">
|
||||
|
|
Loading鈥
Reference in New Issue