diff --git a/jperm/models.py b/jperm/models.py index 3a3f20e2d..bfc2bbf6e 100644 --- a/jperm/models.py +++ b/jperm/models.py @@ -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) \ No newline at end of file + comment = models.CharField(max_length=30, null=True, blank=True) + + def __unicode__(self): + return self.name \ No newline at end of file diff --git a/jperm/urls.py b/jperm/urls.py index f8128e8fb..4f8819f23 100644 --- a/jperm/urls.py +++ b/jperm/urls.py @@ -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'), diff --git a/jperm/views.py b/jperm/views.py index 8e73bef2b..cfdfae7fc 100644 --- a/jperm/views.py +++ b/jperm/views.py @@ -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) diff --git a/templates/jperm/perm_add.html b/templates/jperm/perm_add.html index 77c8dc617..e00c81e44 100644 --- a/templates/jperm/perm_add.html +++ b/templates/jperm/perm_add.html @@ -1,68 +1,173 @@ {% extends 'base.html' %} {% load mytags %} - {% block content %} - {% include 'nav_cat_bar.html' %} -