diff --git a/jperm/models.py b/jperm/models.py index bfc2bbf6e..68ab98bf7 100644 --- a/jperm/models.py +++ b/jperm/models.py @@ -1,6 +1,6 @@ from django.db import models -from juser.models import UserGroup -from jasset.models import BisGroup +from juser.models import UserGroup, DEPT +from jasset.models import Asset, BisGroup class Perm(models.Model): @@ -13,6 +13,14 @@ class Perm(models.Model): 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): name = models.CharField(max_length=50) cmd = models.CharField(max_length=999) diff --git a/jperm/urls.py b/jperm/urls.py index dd44e21b4..14f6b482e 100644 --- a/jperm/urls.py +++ b/jperm/urls.py @@ -8,7 +8,9 @@ urlpatterns = patterns('jperm.views', (r'^perm_edit/$', 'perm_edit'), (r'^perm_add/$', 'perm_add'), + (r'^dept_perm_edit/$', 'dept_perm_edit'), (r'^perm_list/$', 'perm_list'), + (r'^dept_perm_list/$', 'dept_perm_list'), (r'^perm_user_detail/$', 'perm_user_detail'), # (r'^perm_list_ajax/$', 'perm_list_ajax'), (r'^perm_detail/$', 'perm_detail'), diff --git a/jperm/views.py b/jperm/views.py index ee91942f4..e1e182352 100644 --- a/jperm/views.py +++ b/jperm/views.py @@ -3,9 +3,9 @@ from django.shortcuts import render_to_response from django.http import HttpResponseRedirect, HttpResponse 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 jperm.models import Perm, SudoPerm, CmdGroup +from jperm.models import Perm, SudoPerm, CmdGroup, DeptPerm from django.core.paginator import Paginator, EmptyPage, InvalidPage from django.db.models import Q 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 def perm_add(request): - header_title, path1, path2 = u'主机授权添加.', u'授权管理', u'授权添加' + header_title, path1, path2 = u'主机授权添加', u'授权管理', u'授权添加' if request.method == 'GET': user_groups = UserGroup.objects.filter(id__gt=2) @@ -60,6 +60,32 @@ def perm_add(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): header_title, path1, path2 = u'主机授权', u'授权管理', u'授权详情' keyword = request.GET.get('search', '') @@ -71,39 +97,18 @@ def perm_list(request): return render_to_response('jperm/perm_list.html', locals(), context_instance=RequestContext(request)) -# def perm_list_ajax(request): -# tab = request.POST.get('tab', 'tab1') -# search = request.POST.get('search', '') -# -# if tab == 'tab1': -# groups = contact_list = UserGroup.objects.filter(name__icontains=search).order_by('type') -# p = paginator = Paginator(contact_list, 10) -# -# try: -# page = int(request.GET.get('page', '1')) -# except ValueError: -# 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 dept_perm_list(request): + header_title, path1, path2 = '查看部门', '授权管理', '部门授权' + keyword = request.GET.get('search') + if keyword: + contact_list = DEPT.objects.filter(Q(name__icontains=keyword) | Q(comment__icontains=keyword)).order_by('name') + else: + contact_list = DEPT.objects.filter(id__gt=1) + + contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(contact_list, request) + + return render_to_response('jperm/dept_perm_list.html', locals(), context_instance=RequestContext(request)) + def perm_group_update(perm_id, user_group_id_list, asset_groups_id_list): perm = Perm.objects.filter(id=perm_id) @@ -145,8 +150,6 @@ def perm_edit(request): perm_id = request.POST.get('perm_id', '') user_group_id_list = request.POST.getlist('user_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) return HttpResponseRedirect('/jperm/perm_list/') diff --git a/templates/jperm/dept_perm_edit.html b/templates/jperm/dept_perm_edit.html new file mode 100644 index 000000000..3aa99cb4f --- /dev/null +++ b/templates/jperm/dept_perm_edit.html @@ -0,0 +1,158 @@ +{% extends 'base.html' %} +{% load mytags %} +{% block content %} +{% include 'nav_cat_bar.html' %} + +
+
+
+
+
+
部门授权添加
+ +
+ +
+
+ {% if error %} +
{{ error }}
+ {% endif %} + {% if msg %} +
{{ msg }}
+ {% endif %} +
+ +
+ +
+
+ +
+
+ + +
+
+ + +
+
+ +
+
+ +
+
+
+ +
+ +
+ +
+
+ +
+
+ +
+
+ + +
+
+ +
+
+ +
+
+
+ + +
+ +
+
+
+ + +
+
+
+
+ +
+
+
+
+
+ + + + +{% endblock %} \ No newline at end of file diff --git a/templates/jperm/dept_perm_list.html b/templates/jperm/dept_perm_list.html new file mode 100644 index 000000000..ac6ce7311 --- /dev/null +++ b/templates/jperm/dept_perm_list.html @@ -0,0 +1,104 @@ +{% extends 'base.html' %} +{% load mytags %} +{% block content %} +{% include 'nav_cat_bar.html' %} + +
+
+
+
+
+
查看部门
+ +
+ +
+
+ 添加部门 + +
+ + + + + + + + + + + + + + {% for dept in contacts.object_list %} + + + + + + + + {% endfor %} + +
部门名称成员数量授权主机数量备注操作
{{ dept.name }} {{ dept.id | dept_member }} {{ dept.id | dept_member }} {{ dept.comment }} + 主机 + 授权编辑 +
+
+
+
+ Showing {{ contacts.start_index }} to {{ contacts.end_index }} of {{ p.count }} entries +
+
+ {% include 'paginator.html' %} +
+
+
+
+
+
+ + + +{% endblock %} \ No newline at end of file diff --git a/templates/jperm/perm_add.html b/templates/jperm/perm_add.html index e65f960b3..c0a592d85 100644 --- a/templates/jperm/perm_add.html +++ b/templates/jperm/perm_add.html @@ -50,9 +50,9 @@
- {% for user_group in user_groups %} - + {% endfor %}
@@ -80,7 +80,7 @@
- {% for asset_group in asset_groups %} {% endfor %} diff --git a/templates/nav.html b/templates/nav.html index e474ec61c..a355bf3b7 100644 --- a/templates/nav.html +++ b/templates/nav.html @@ -36,6 +36,12 @@
  • 授权管理