Commit b4006d3d authored by guanghongwei's avatar guanghongwei

perm edit޸

parent b62bc9d1
......@@ -6,12 +6,7 @@ urlpatterns = patterns('jperm.views',
# url(r'^$', 'jumpserver.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
(r'^perm_host/$', 'perm_host'),
(r'^perm_add/$', 'perm_add'),
(r'^perm_edit/$', 'perm_edit'),
(r'^perm_user_show/$', 'perm_user_show'),
(r'^perm_host/$', 'perm_list'),
(r'^perm_user_edit/$', 'perm_user_edit'),
(r'^perm_user_detail/$', 'perm_user_detail'),
(r'^perm_group_edit/$', 'perm_group_edit'),
(r'^perm_group_detail/$', 'perm_group_detail'),
(r'^perm_list/$', 'perm_list'),
)
......@@ -3,15 +3,32 @@
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect, HttpResponse
from juser.models import User, UserGroup
from jasset.models import Asset
from jasset.models import Asset, BisGroup
from jperm.models import Perm
from django.core.paginator import Paginator, EmptyPage, InvalidPage
def perm_host(request):
header_title, path1, path2 = u'主机授权 | Perm Host Detail.', u'jperm', u'perm_host'
users = contact_list = User.objects.all().order_by('id')
groups = contact_list2 = UserGroup.objects.all().order_by('id')
def perm_group_update(user_group_name='', user_group_id='', asset_groups_name='', asset_groups_id=''):
if user_group_name:
user_group = UserGroup.objects.get(name=user_group_name)
else:
user_group = UserGroup.objects.get(id=user_group_id)
Perm.objects.filter(user_group=user_group).delete()
if asset_groups_name:
for asset_group_name in asset_groups_name:
asset_group = BisGroup.objects.get(name=asset_group_name)
Perm(user_group=user_group, asset_group=asset_group).save()
else:
for asset_group_id in asset_groups_id:
asset_group = BisGroup.objects.get(id=asset_group_id)
Perm(user_group=user_group, asset_group=asset_group).save()
def perm_list(request):
header_title, path1, path2 = u'主机授权 | Perm Host Detail.', u'jperm', u'perm_list'
groups = contact_list = UserGroup.objects.all().order_by('type')
users = contact_list2 = User.objects.all().order_by('id')
p = paginator = Paginator(contact_list, 10)
p2 = paginator2 = Paginator(contact_list2, 10)
try:
......@@ -25,99 +42,103 @@ def perm_host(request):
except (EmptyPage, InvalidPage):
contacts = paginator.page(paginator.num_pages)
contacts2 = paginator2.page(paginator2.num_pages)
return render_to_response('jperm/perm_host.html', locals())
def perm_user_host(username, ips):
user = User.objects.get(username=username)
user.perm_set.all().delete()
for ip in ips:
asset = Asset.objects.get(ip=ip)
Perm.objects.create(user=user, asset=asset)
def perm_user_edit(request):
header_title, path1, path2 = u'授权编辑 | Perm Edit.', u'jperm', u'perm_edit'
if request.method == 'GET':
if request.GET.get('id', None):
user_id = request.GET.get('id')
user = User.objects.get(id=user_id)
assets = Asset.objects.all()
assets_permed = []
for perm in user.perm_set.all():
assets_permed.append(perm.asset)
assets_unperm = list(set(assets)-set(assets_permed))
return render_to_response('jperm/perm_user_edit.html', locals())
else:
host_ips = request.POST.getlist('host_permed', '')
username = request.POST.get('username')
perm_user_host(username, host_ips)
return HttpResponseRedirect('/jperm/perm_host/')
def perm_user_detail(request):
user_id = request.GET.get('id', '')
user = User.objects.get(id=user_id)
host_permed = []
for perm in user.perm_set.all():
host_permed.append(perm.asset)
return render_to_response('jperm/perm_user_detail.html', locals())
def perm_group_edit(request):
if request.method == 'GET':
group_id = request.GET.get('id', '')
group = UserGroup.objects.get(id=group_id)
return render_to_response('jperm/perm_group_edit.html')
return render_to_response('jperm/perm_list.html', locals())
def perm_add(request):
header_title, path1, path2 = u'添加授权 | Add User perm.', u'授权管理', u'添加授权'
def perm_edit(request):
if request.method == 'GET':
username = request.GET.get('username', None)
if not username:
return HttpResponseRedirect('/')
user = User.objects.get(username=username)
permed_hosts = []
for perm in user.perm_set.all():
permed_hosts.append(perm.asset)
hosts_all = Asset.objects.all()
hosts = list(set(hosts_all) - set(permed_hosts))
header_title, path1, path2 = u'编辑授权 | Perm Host Edit.', u'jperm', u'perm_edit'
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())
else:
username = request.POST.get('username', None)
host_ids = request.POST.getlist('host_ids', None)
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/')
# def perm_user_host(username, ips):
# user = User.objects.get(username=username)
# user.perm_set.all().delete()
# for ip in ips:
# asset = Asset.objects.get(ip=ip)
# Perm.objects.create(user=user, asset=asset)
#
#
# def perm_user_edit(request):
# header_title, path1, path2 = u'授权编辑 | Perm Edit.', u'jperm', u'perm_edit'
# if request.method == 'GET':
# if request.GET.get('id', None):
# user_id = request.GET.get('id')
# user = User.objects.get(id=user_id)
# assets = Asset.objects.all()
# assets_permed = []
# for perm in user.perm_set.all():
# assets_permed.append(perm.asset)
# assets_unperm = list(set(assets)-set(assets_permed))
# return render_to_response('jperm/perm_user_edit.html', locals())
# else:
# host_ips = request.POST.getlist('host_permed', '')
# username = request.POST.get('username')
# perm_user_host(username, host_ips)
#
# return HttpResponseRedirect('/jperm/perm_host/')
#
#
# def perm_user_detail(request):
# user_id = request.GET.get('id', '')
# user = User.objects.get(id=user_id)
# host_permed = []
# for perm in user.perm_set.all():
# host_permed.append(perm.asset)
#
# return render_to_response('jperm/perm_user_detail.html', locals())
#
#
# def perm_group_edit(request):
# if request.method == 'GET':
# group_id = request.GET.get('id', '')
# group = UserGroup.objects.get(id=group_id)
#
# return render_to_response('jperm/perm_group_edit.html')
#
#
# def perm_add(request):
# header_title, path1, path2 = u'添加授权 | Add User perm.', u'授权管理', u'添加授权'
# if request.method == 'GET':
# username = request.GET.get('username', None)
# if not username:
# return HttpResponseRedirect('/')
#
# user = User.objects.get(username=username)
# permed_hosts = []
# for perm in user.perm_set.all():
# permed_hosts.append(perm.asset)
#
# hosts_all = Asset.objects.all()
# hosts = list(set(hosts_all) - set(permed_hosts))
#
# else:
# username = request.POST.get('username', None)
# host_ids = request.POST.getlist('host_ids', None)
#
# user = User.objects.get(username=username)
# for host_id in host_ids:
# asset = Asset.objects.get(id=host_id)
# perm = Perm(user=user, asset=asset)
# perm.save()
# msg = u'添加成功'
#
# return render_to_response('jperm/perm_add.html', locals())
#
#
# def perm_user_show(request):
# header_title, path1, path2 = u'查看授权用户 | Perm User Detail.', u'授权管理', u'用户详情'
# users = User.objects.all()
# return render_to_response('jperm/perm_user_show.html', locals(),)
user = User.objects.get(username=username)
for host_id in host_ids:
asset = Asset.objects.get(id=host_id)
perm = Perm(user=user, asset=asset)
perm.save()
msg = u'添加成功'
return render_to_response('jperm/perm_add.html', locals())
def perm_user_show(request):
header_title, path1, path2 = u'查看授权用户 | Perm User Detail.', u'授权管理', u'用户详情'
users = User.objects.all()
return render_to_response('jperm/perm_user_show.html', locals(),)
def perm_list(request):
header_title, path1, path2 = u'查看用户授权 | Perm User Detail.', u'授权管理', u'用户详情'
username = request.GET.get('username', None)
if not username:
return HttpResponseRedirect('/')
user = User.objects.get(username=username)
hosts = []
for perm in user.perm_set.all():
hosts.append(perm.asset)
return render_to_response('jperm/perm_list.html', locals())
......@@ -50,18 +50,18 @@ def bool2str(value):
return u'否'
@register.filter(name='perm_count')
def perm_count(user_id):
user = User.objects.get(id=int(user_id))
return user.perm_set.all().count()
@register.filter(name='member_count')
def member_count(group_id):
group = UserGroup.objects.get(id=group_id)
return group.user_set.count()
@register.filter(name='perm_count')
def perm_count(group_id):
group = UserGroup.objects.get(id=group_id)
return group.perm_set.count()
@register.filter(name='group_type_to_str')
def group_type_to_str(type_name):
group_types = {
......
......@@ -5,7 +5,7 @@ urlpatterns = patterns('',
# Examples:
# url(r'^$', 'jumpserver.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
(r'^$', 'jumpserver.views.base'),
(r'^skin_config/$', 'jumpserver.views.skin_config'),
(r'^base/$', 'jumpserver.views.base'),
(r'^juser/', include('juser.urls')),
......
{% 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 %}
\ No newline at end of file
This diff is collapsed.
......@@ -34,7 +34,7 @@
<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><a href="/jperm/perm_host/">主机授权</a></li>
<li><a href="/jperm/perm_list/">主机授权</a></li>
<li><a href="/jperm/perm_sudo/">Sudo授权</a></li>
</ul>
</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