diff --git a/jumpserver/templatetags/mytags.py b/jumpserver/templatetags/mytags.py
index 3d8d56d35..0352e7e1e 100644
--- a/jumpserver/templatetags/mytags.py
+++ b/jumpserver/templatetags/mytags.py
@@ -2,7 +2,8 @@
import time
from django import template
-from juser.models import User, UserGroup
+from django.db.models import Q
+from juser.models import User
register = template.Library()
@@ -24,16 +25,16 @@ def int2str(value):
def get_role(user_id):
user_role = {'SU': u'超级管理员', 'GA': u'组管理员', 'CU': u'普通用户'}
user = User.objects.get(id=user_id)
- return user_role.get(user.role)
+ return user_role.get(str(user.role))
@register.filter(name='groups_str')
def groups_str(username):
groups = []
user = User.objects.get(username=username)
- for group in user.user_group.filter(type='M'):
+ for group in user.user_group.filter(Q(type='A') | Q(type='M')):
groups.append(group.name)
- return ','.join(groups)
+ return ' '.join(groups)
@register.filter(name='get_item')
@@ -52,4 +53,15 @@ def bool2str(value):
@register.filter(name='perm_count')
def perm_count(user_id):
user = User.objects.get(id=int(user_id))
- return user.perm_set.all().count()
\ No newline at end of file
+ return user.perm_set.all().count()
+
+
+@register.filter(name='group_type_to_str')
+def group_type_to_str(type_name):
+ group_types = {
+ 'P': '私有组',
+ 'M': '管理组',
+ 'A': '授权组',
+ }
+
+ return group_types.get(type_name)
diff --git a/juser/models.py b/juser/models.py
index 3c4167db5..67fe6de30 100644
--- a/juser/models.py
+++ b/juser/models.py
@@ -9,7 +9,7 @@ class UserGroup(models.Model):
)
name = models.CharField(max_length=80, unique=True)
- type = models.CharField(max_length=1, choices=GROUP_TYPE_CHOICES, default='U')
+ type = models.CharField(max_length=1, choices=GROUP_TYPE_CHOICES, default='P')
comment = models.CharField(max_length=160, blank=True, null=True)
def __unicode__(self):
diff --git a/juser/views.py b/juser/views.py
index 879b31421..0f4969af5 100644
--- a/juser/views.py
+++ b/juser/views.py
@@ -15,6 +15,7 @@ from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from django.core.exceptions import ObjectDoesNotExist
+from django.db.models import Q
from juser.models import UserGroup, User
from connect import PyCrypt, KEY
@@ -117,37 +118,57 @@ def group_db_add(**kwargs):
group_name = kwargs.get('name')
group = UserGroup.objects.filter(name=group_name)
if group:
- raise AddError
+ raise AddError('Group %s have been exist .' % group_name)
UserGroup.objects.create(**kwargs)
-def user_group_add(username, group_name):
- user = User.objects.get(username=username)
+def add_user_to_group(username, group_name):
+ try:
+ user = User.objects.get(username=username)
+ group = UserGroup.objects.get(name=group_name)
+ except ObjectDoesNotExist:
+ raise AddError('User %s or group % does not exit. ' % username, group_name)
+ else:
+ groups = [group]
+ for g in user.user_group.all():
+ groups.append(g)
+ user.user_group = groups
+
+
+def group_add_user(group_name, user_id):
group = UserGroup.objects.get(name=group_name)
- groups = [group]
- for g in user.user_group.all():
- groups.append(g)
- user.user_group = groups
+ user = User.objects.get(id=user_id)
+ group.user_set.add(user)
def group_add(request):
error = ''
msg = ''
header_title, path1, path2 = '添加属组 | Add Group', 'juser', 'group_add'
-
+ group_types = {
+ 'P': '私有组',
+ 'M': '管理组',
+ 'A': '授权组',
+ }
+ users = User.objects.all()
if request.method == 'POST':
- group_name = request.POST.get('group_name', None)
- comment = request.POST.get('comment', None)
+ group_name = request.POST.get('group_name', '')
+ group_type = request.POST.get('group_type', 'A')
+ users_selected = request.POST.getlist('users_selected', '')
+ comment = request.POST.get('comment', '')
try:
if not group_name:
error = u'组名不能为空'
raise AddError
- group_db_add(name=group_name, comment=comment, type='M')
+ group_db_add(name=group_name, comment=comment, type=group_type)
+ for user_id in users_selected:
+ group_add_user(group_name, user_id)
+
except AddError:
pass
except TypeError:
- error = u'保存用户失败'
+ error = u'保存用户组失败'
else:
msg = u'添加组 %s 成功' % group_name
@@ -156,7 +177,7 @@ def group_add(request):
def group_list(request):
header_title, path1, path2 = '查看属组 | Show Group', 'juser', 'group_list'
- groups = contact_list = UserGroup.objects.filter(type='M').order_by('id')
+ groups = contact_list = UserGroup.objects.filter(Q(type='M') | Q(type='A')).order_by('id')
p = paginator = Paginator(contact_list, 10)
try:
@@ -467,8 +488,8 @@ def user_add(request):
date_joined=time_now)
server_add_user(username, password, ssh_key_pwd)
- group_db_add(name=username, comment=username, type='U')
- user_group_add(username=username, group_name=username)
+ group_db_add(name=username, comment=username, type='P')
+ add_user_to_group(username=username, group_name=username)
if LDAP_ENABLE:
ldap_add_user(username, ldap_pwd)
msg = u'添加用户 %s 成功!' % username
diff --git a/templates/jperm/perm_user_edit.html b/templates/jperm/perm_user_edit.html
index 1ce00ec94..00cc85e73 100644
--- a/templates/jperm/perm_user_edit.html
+++ b/templates/jperm/perm_user_edit.html
@@ -4,19 +4,6 @@
{% block content %}
{% endblock %}
\ No newline at end of file
diff --git a/templates/juser/group_detail.html b/templates/juser/group_detail.html
index 9b906ccc0..46c205d07 100644
--- a/templates/juser/group_detail.html
+++ b/templates/juser/group_detail.html
@@ -20,23 +20,22 @@
- 属组 |
- 详情 |
+ 用户名 |
+ 姓名 |
+ 角色 |
+ {% for user in users %}
- ID |
- {{ group.id }} |
-
-
- 组名 |
- {{ group.name }} |
-
-
- 备注 |
- {{ group_comment }} |
+ {{ user.username }} |
+ {{ user.name }} |
+ {{ user.id|get_role }} |
+ {% endfor %}
+
+
+
diff --git a/templates/juser/group_list.html b/templates/juser/group_list.html
index 086dd43d2..89f1f0f83 100644
--- a/templates/juser/group_list.html
+++ b/templates/juser/group_list.html
@@ -39,6 +39,7 @@
|
ID |
组名 |
+ 类型 |
备注 |
操作 |
@@ -49,9 +50,10 @@
|
{{ group.id }} |
{{ group.name }} |
+ {{ group.type|group_type_to_str }} |
{{ group.comment }} |
- 详情
+ 成员
编辑
删除
|
diff --git a/templates/juser/user_add.html b/templates/juser/user_add.html
index d2c0705c8..9bf685edc 100644
--- a/templates/juser/user_add.html
+++ b/templates/juser/user_add.html
@@ -54,9 +54,9 @@