Commit a94c050f authored by guanghongwei's avatar guanghongwei

完工,睡觉

parent 07b0e298
# coding: utf-8 # coding: utf-8
from django.shortcuts import render_to_response from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect 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
from jasset.models import Asset, BisGroup from jasset.models import Asset, BisGroup
...@@ -18,23 +18,6 @@ if LDAP_ENABLE: ...@@ -18,23 +18,6 @@ if LDAP_ENABLE:
LDAP_ROOT_PW = CONF.get('ldap', 'root_pw') LDAP_ROOT_PW = CONF.get('ldap', 'root_pw')
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 user_asset_cmd_groups_get(user_groups_select='', asset_groups_select='', cmd_groups_select=''): def user_asset_cmd_groups_get(user_groups_select='', asset_groups_select='', cmd_groups_select=''):
user_groups_select_list = [] user_groups_select_list = []
asset_groups_select_list = [] asset_groups_select_list = []
...@@ -78,8 +61,11 @@ def perm_add(request): ...@@ -78,8 +61,11 @@ def perm_add(request):
def perm_list(request): def perm_list(request):
header_title, path1, path2 = u'主机授权', u'授权管理', u'授权详情' header_title, path1, path2 = u'主机授权', u'授权管理', u'授权详情'
contact_list = Perm.objects.all() keyword = request.GET.get('search', '')
contact_list2 = User.objects.all().order_by('id') if keyword:
contact_list = Perm.objects.filter(name__icontains=keyword)
else:
contact_list = Perm.objects.all()
p = paginator = Paginator(contact_list, 10) p = paginator = Paginator(contact_list, 10)
try: try:
current_page = int(request.GET.get('page', '1')) current_page = int(request.GET.get('page', '1'))
...@@ -95,45 +81,63 @@ def perm_list(request): ...@@ -95,45 +81,63 @@ 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 perm_list_ajax(request):
tab = request.POST.get('tab', 'tab1') # tab = request.POST.get('tab', 'tab1')
search = request.POST.get('search', '') # search = request.POST.get('search', '')
#
if tab == 'tab1': # if tab == 'tab1':
groups = contact_list = UserGroup.objects.filter(name__icontains=search).order_by('type') # groups = contact_list = UserGroup.objects.filter(name__icontains=search).order_by('type')
p = paginator = Paginator(contact_list, 10) # p = paginator = Paginator(contact_list, 10)
#
try: # try:
page = int(request.GET.get('page', '1')) # page = int(request.GET.get('page', '1'))
except ValueError: # except ValueError:
page = 1 # page = 1
#
try: # try:
contacts = paginator.page(page) # contacts = paginator.page(page)
except (EmptyPage, InvalidPage): # except (EmptyPage, InvalidPage):
contacts = paginator.page(paginator.num_pages) # contacts = paginator.page(paginator.num_pages)
#
else: # else:
users = contact_list2 = User.objects.filter(name__icontains=search).order_by('id') # users = contact_list2 = User.objects.filter(name__icontains=search).order_by('id')
p2 = paginator2 = Paginator(contact_list2, 10) # 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):
perm = Perm.objects.filter(id=perm_id)
if perm:
perm = perm[0]
user_group_list = []
asset_group_list = []
try: for user_group_id in user_group_id_list:
page = int(request.GET.get('page', '1')) user_group_list.extend(UserGroup.objects.filter(id=user_group_id))
except ValueError:
page = 1
try: for asset_group_id in asset_groups_id_list:
contacts2 = paginator2.page(page) asset_group_list.extend(BisGroup.objects.filter(id=asset_group_id))
except (EmptyPage, InvalidPage):
contacts2 = paginator2.page(paginator2.num_pages)
return render_to_response('jperm/perm_list_ajax.html', locals()) perm.user_group.clear()
perm.asset_group.clear()
perm.user_group = user_group_list
perm.asset_group = asset_group_list
def perm_edit(request): def perm_edit(request):
if request.method == 'GET': if request.method == 'GET':
header_title, path1, path2 = u'编辑授权', u'授权管理', u'授权编辑' header_title, path1, path2 = u'编辑授权', u'授权管理', u'授权编辑'
perm_id = request.GET.get('id') perm_id = request.GET.get('id', '')
perm = Perm.objects.filter(id=perm_id) perm = Perm.objects.filter(id=perm_id)
if perm: if perm:
perm = perm[0] perm = perm[0]
...@@ -142,16 +146,20 @@ def perm_edit(request): ...@@ -142,16 +146,20 @@ def perm_edit(request):
user_groups_select = perm.user_group.all() user_groups_select = perm.user_group.all()
asset_groups_select = perm.asset_group.all() asset_groups_select = perm.asset_group.all()
user_groups_all = UserGroup.objects.filter(Q(type='A') | Q(type='M')) user_groups_all = UserGroup.objects.all()
asset_groups_all = BisGroup.objects.all() 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] 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] asset_groups = [asset_group for asset_group in asset_groups_all if asset_group not in asset_groups_select]
else: else:
user_group_name = request.POST.get('user_group_name') perm_id = request.POST.get('perm_id', '')
asset_groups_selected = request.POST.getlist('asset_group_permed') user_group_id_list = request.POST.getlist('user_groups_select')
perm_group_update(user_group_name=user_group_name, asset_groups_id=asset_groups_selected) asset_group_id_list = request.POST.getlist('asset_groups_select')
return HttpResponseRedirect('/jperm/perm_list/', locals(), context_instance=RequestContext(request)) # 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)
return HttpResponseRedirect('/jperm/perm_list/')
return render_to_response('jperm/perm_edit.html', locals(), context_instance=RequestContext(request)) return render_to_response('jperm/perm_edit.html', locals(), context_instance=RequestContext(request))
......
__author__ = 'guanghongwei'
from juser.models import User, UserGroup
from jasset.models import Asset, BisGroup
def user_perm_group_api(user):
if user:
perm_list = []
user_group_all = user.group.all()
for user_group in user_group_all:
perm_list.extend(user_group.perm_set.all())
asset_group_list = []
for perm in perm_list:
asset_group_list.extend(perm.asset_group.all())
return asset_group_list
def asset_perm_api(asset):
if asset:
perm_list = []
asset_group_all = asset.bis_group.all()
for asset_group in asset_group_all:
perm_list.extend(asset_group.perm_set.all())
user_group_list = []
for perm in perm_list:
user_group_list.extend(perm.user_group.all())
user_permed_list = []
for user_group in user_group_list:
user_permed_list.extend(user_group.user_set.all())
return user_permed_list
...@@ -47,6 +47,14 @@ def groups_str(user_id): ...@@ -47,6 +47,14 @@ def groups_str(user_id):
return "%s ..." % ' '.join(groups[0:2]) return "%s ..." % ' '.join(groups[0:2])
@register.filter(name='group_str2')
def groups_str2(group_list):
if len(group_list) < 3:
return ' '.join([group.name for group in group_list])
else:
return '%s ...' % ' '.join([group.name for group in group_list[0:2]])
@register.filter(name='group_manage_str') @register.filter(name='group_manage_str')
def group_manage_str(username): def group_manage_str(username):
user = User.objects.get(username=username) user = User.objects.get(username=username)
......
...@@ -23,6 +23,7 @@ from connect import PyCrypt, KEY ...@@ -23,6 +23,7 @@ from connect import PyCrypt, KEY
from connect import BASE_DIR from connect import BASE_DIR
from connect import CONF from connect import CONF
from jumpserver.views import md5_crypt, LDAPMgmt, LDAP_ENABLE, ldap_conn, page_list_return from jumpserver.views import md5_crypt, LDAPMgmt, LDAP_ENABLE, ldap_conn, page_list_return
from jumpserver.api import user_perm_group_api
if LDAP_ENABLE: if LDAP_ENABLE:
LDAP_HOST_URL = CONF.get('ldap', 'host_url') LDAP_HOST_URL = CONF.get('ldap', 'host_url')
...@@ -553,6 +554,7 @@ def user_detail(request): ...@@ -553,6 +554,7 @@ def user_detail(request):
user = User.objects.filter(id=user_id) user = User.objects.filter(id=user_id)
if user: if user:
user = user[0] user = user[0]
asset_group_permed = user_perm_group_api(user)
return render_to_response('juser/user_detail.html', locals(), context_instance=RequestContext(request)) return render_to_response('juser/user_detail.html', locals(), context_instance=RequestContext(request))
......
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
<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> </tr>
</thead> </thead>
<tbody> <tbody>
...@@ -60,6 +61,11 @@ ...@@ -60,6 +61,11 @@
<td class="text-center"> <td class="text-center">
<a class="log_command text-success" href="/jlog/history/?id={{ l.id }}">命令统计</a> <a class="log_command text-success" href="/jlog/history/?id={{ l.id }}">命令统计</a>
</td> </td>
<td>
{% for user in user_permed_list %}
{{ user.name }}
{% endfor %}
</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
<th>用户名</th> <th>用户名</th>
<th>姓名</th> <th>姓名</th>
<th>部门</th> <th>部门</th>
<th></th> <th></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
...@@ -42,8 +42,8 @@ ...@@ -42,8 +42,8 @@
<tr> <tr>
<td>{{ user.username }}</td> <td>{{ user.username }}</td>
<td>{{ user.name }}</td> <td>{{ user.name }}</td>
<td>{{ user.username|group_manage_str }}</td> <td>{{ user.dept.name }}</td>
<td>{{ user.username|groups_str }}</td> <td>{{ user.group.all | group_str2 }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
<label for="name" class="col-sm-2 control-label">授权名<span class="red-fonts">*</span></label> <label for="name" class="col-sm-2 control-label">授权名<span class="red-fonts">*</span></label>
<div class="col-sm-8"> <div class="col-sm-8">
<input id="name" name="name" placeholder="授权名称" type="text" class="form-control" value="{{ name }}"> <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 }}"> <input id="perm_id" name="perm_id" style="display: none" value="{{ perm.id }}">
<span class="help-block m-b-none">取个名字方便辨识</span> <span class="help-block m-b-none">取个名字方便辨识</span>
</div> </div>
</div> </div>
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
<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="5" 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>
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
<div> <div>
<select id="user_groups_select" name="user_groups_select" class="form-control m-b" size="5" multiple> <select id="user_groups_select" name="user_groups_select" class="form-control m-b" size="5" multiple>
{% for user_group in user_groups_select %} {% for user_group in user_groups_select %}
<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>
...@@ -147,18 +147,6 @@ $('#sudoPerm').validator({ ...@@ -147,18 +147,6 @@ $('#sudoPerm').validator({
tip: "输入授权名", tip: "输入授权名",
ok: "", ok: "",
msg: {required: "必须填写!"} msg: {required: "必须填写!"}
},
"user_groups_select": {
rule: "required",
tip: "选择用户组",
ok: "",
msg: {checked: "至少选择一个用户组"}
},
"asset_groups_select": {
rule: "required",
tip: "选择主机组",
ok: "",
msg: {checked: "至少选择一个主机组"}
} }
}, },
...@@ -170,7 +158,11 @@ $('#sudoPerm').validator({ ...@@ -170,7 +158,11 @@ $('#sudoPerm').validator({
$(document).ready(function(){ $(document).ready(function(){
$("#submit_button").click(function(){ $("#submit_button").click(function(){
$('#users_selected option').each(function(){ $('#user_groups_select option').each(function(){
$(this).prop('selected', true)
})
$('#asset_groups_select option').each(function(){
$(this).prop('selected', true) $(this).prop('selected', true)
}) })
}) })
......
This diff is collapsed.
...@@ -71,6 +71,14 @@ ...@@ -71,6 +71,14 @@
<td class="text-center">最后登录</td> <td class="text-center">最后登录</td>
<td class="text-center">{{ user.last_login }}</td> <td class="text-center">{{ user.last_login }}</td>
</tr> </tr>
<tr class="gradeX">
<td class="text-center">授权主机组</td>
<td class="text-center">
{% for asset_group in asset_group_permed %}
{{ asset_group.name }}
{% endfor %}
</td>
</tr>
</table> </table>
</div> </div>
</div> </div>
......
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
<td class="text-center"> {{ user.username }} </td> <td class="text-center"> {{ user.username }} </td>
<td class="text-center"> {{ user.name }} </td> <td class="text-center"> {{ user.name }} </td>
<td class="text-center"> {{ user.dept.name }} </td> <td class="text-center"> {{ user.dept.name }} </td>
<td class="text-center"> {{ user.id | groups_str }} </td> <td class="text-center"> {{ user.group.all | group_str2 }} </td>
<td class="text-center"> {{ user.id | get_role }}</td> <td class="text-center"> {{ user.id | get_role }}</td>
<td class="text-center">{{ user.is_active|bool2str }}</td> <td class="text-center">{{ user.is_active|bool2str }}</td>
<td class="text-center"> <td class="text-center">
......
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