diff --git a/connect.py b/connect.py index dc9a6ae31..03f03a5c4 100755 --- a/connect.py +++ b/connect.py @@ -259,6 +259,7 @@ def verify_connect(username, part_ip): color_print('No Permission or No host.', 'red') else: username, password, host, port = get_connect_item(username, ip_matched[0]) + print username, password, host, port connect(username, password, host, port, LOGIN_NAME) diff --git a/jumpserver/templatetags/mytags.py b/jumpserver/templatetags/mytags.py index 01b81d486..43bfca702 100644 --- a/jumpserver/templatetags/mytags.py +++ b/jumpserver/templatetags/mytags.py @@ -33,7 +33,7 @@ def get_role(user_id): def groups_str(username): groups = [] user = User.objects.get(username=username) - for group in user.user_group.filter(Q(type='A') | Q(type='M')): + for group in user.user_group.filter(type='A'): groups.append(group.name) if len(groups) < 4: return ' '.join(groups) @@ -41,6 +41,16 @@ def groups_str(username): return "%s ..." % ' '.join(groups[0:3]) +@register.filter(name='group_manage_str') +def group_manage_str(username): + user = User.objects.get(username=username) + group = user.user_group.filter(type='M') + if group: + return group[0].name + else: + return '' + + @register.filter(name='get_item') def get_item(dictionary, key): return dictionary.get(key) @@ -70,8 +80,8 @@ def perm_count(group_id): def group_type_to_str(type_name): group_types = { 'P': '私有组', - 'M': '管理组', - 'A': '授权组', + 'M': '部门', + 'A': '用户组', } return group_types.get(type_name) diff --git a/jumpserver/urls.py b/jumpserver/urls.py index 9352fc543..dff10261d 100644 --- a/jumpserver/urls.py +++ b/jumpserver/urls.py @@ -14,4 +14,5 @@ urlpatterns = patterns('', (r'^jasset/', include('jasset.urls')), (r'^jlog/', include('jlog.urls')), (r'^jperm/', include('jperm.urls')), + ) diff --git a/juser/urls.py b/juser/urls.py index d9c51dc6f..0f35ece07 100644 --- a/juser/urls.py +++ b/juser/urls.py @@ -9,6 +9,7 @@ urlpatterns = patterns('juser.views', (r'^user_add/$', 'user_add'), (r'^user_list/$', 'user_list'), (r'^group_add/$', 'group_add'), + (r'^group_add_ajax/$', 'group_add_ajax'), (r'^group_list/$', 'group_list'), (r'^user_detail/$', 'user_detail'), (r'^user_del/$', 'user_del'), diff --git a/juser/views.py b/juser/views.py index 875754003..a93d267b4 100644 --- a/juser/views.py +++ b/juser/views.py @@ -4,7 +4,6 @@ import time import os -import hashlib import random import subprocess import ldap @@ -17,12 +16,14 @@ from django.shortcuts import render_to_response from django.core.exceptions import ObjectDoesNotExist from django.db.models import Q from django.http import HttpResponse +from django.core.paginator import Paginator, EmptyPage, InvalidPage from juser.models import UserGroup, User from connect import PyCrypt, KEY from connect import BASE_DIR from connect import CONF -from django.core.paginator import Paginator, EmptyPage, InvalidPage +from jumpserver.views import md5_crypt + CRYPTOR = PyCrypt(KEY) LDAP_ENABLE = CONF.getint('ldap', 'ldap_enable') @@ -253,16 +254,22 @@ def ldap_del_user(username): ldap_conn.delete(sudo_dn) -def group_add(request): +def group_add(request, group_type_select='A'): error = '' msg = '' header_title, path1, path2 = '添加属组 | Add Group', 'juser', 'group_add' group_types = { # 'P': '私有组', - 'M': '管理组', - 'A': '授权组', + 'M': '部门', + 'A': '用户组', } - users = User.objects.all() + + users_all = User.objects.all() + if group_type_select == 'M': + users = [user for user in users_all if not user.user_group.filter(type='M')] + else: + users = users_all + if request.method == 'POST': group_name = request.POST.get('group_name', '') group_type = request.POST.get('group_type', 'A') @@ -287,9 +294,20 @@ def group_add(request): return render_to_response('juser/group_add.html', locals()) +def group_add_ajax(request): + group_type = request.POST.get('type', 'A') + users_all = User.objects.all() + if group_type == 'A': + users = users_all + else: + users = [user for user in users_all if not user.user_group.filter(type='M')] + + return render_to_response('juser/group_add_ajax.html', locals()) + + def group_list(request): header_title, path1, path2 = '查看属组 | Show Group', 'juser', 'group_list' - groups = contact_list = UserGroup.objects.filter(Q(type='M') | Q(type='A')).order_by('id') + groups = contact_list = UserGroup.objects.filter(Q(type='M') | Q(type='A')).order_by('type') p = paginator = Paginator(contact_list, 10) try: @@ -328,8 +346,8 @@ def group_edit(request): header_title, path1, path2 = '修改属组 | Edit Group', 'juser', 'group_edit' group_types = { # 'P': '私有组', - 'M': '管理组', - 'A': '授权组', + 'M': '部门', + 'A': '用户组', } if request.method == 'GET': group_id = request.GET.get('id', None) @@ -341,7 +359,7 @@ def group_edit(request): users_selected = group.user_set.all() users = [user for user in users_all if user not in users_selected] - return render_to_response('juser/group_add.html', locals()) + return render_to_response('juser/group_edit.html', locals()) else: group_id = request.POST.get('group_id', None) group_name = request.POST.get('group_name', None) @@ -407,9 +425,10 @@ def user_edit(request): password = user.password ssh_key_pwd = user.ssh_key_pwd name = user.name - all_group = UserGroup.objects.filter(Q(type='M') | Q(type='A')) - groups = user.user_group.filter(Q(type='M') | Q(type='A')) - groups_str = ' '.join([str(group.id) for group in groups]) + manage_groups = UserGroup.objects.filter(type='M') + auth_groups = UserGroup.objects.filter(type='A') + manage_group_id = user.user_group.get(type='M').id + groups_str = ' '.join([str(group.id) for group in auth_groups]) user_role = {'SU': u'超级管理员', 'GA': u'组管理员', 'CU': u'普通用户'} role_post = user.role ssh_pwd = user.ssh_pwd @@ -420,8 +439,11 @@ def user_edit(request): password = request.POST.get('password', None) name = request.POST.get('name', None) email = request.POST.get('email', '') - groups = request.POST.getlist('groups', None) - groups_str = ' '.join(groups) + manage_group_id = request.POST.get('manage_group', '') + auth_groups = request.POST.getlist('groups', None) + groups = auth_groups + groups.append(manage_group_id) + groups_str = ' '.join(auth_groups) role_post = request.POST.get('role', None) ssh_pwd = request.POST.get('ssh_pwd', None) ssh_key_pwd = request.POST.get('ssh_key_pwd', None) @@ -464,14 +486,18 @@ def user_add(request): msg = '' header_title, path1, path2 = '添加用户 | Add User', 'juser', 'user_add' user_role = {'SU': u'超级管理员', 'GA': u'组管理员', 'CU': u'普通用户'} - all_group = UserGroup.objects.filter(Q(type='M') | Q(type='A')).order_by('-type') + manage_groups = UserGroup.objects.filter(type='M') + auth_groups = UserGroup.objects.filter(type='A') if request.method == 'POST': username = request.POST.get('username', None) password = request.POST.get('password', '') name = request.POST.get('name', None) email = request.POST.get('email', '') - groups = request.POST.getlist('groups', None) - groups_str = ' '.join(groups) + manage_group_id = request.POST.get('manage_group') + auth_groups = request.POST.getlist('groups', None) + groups = auth_groups + groups.append(manage_group_id) + groups_str = ' '.join(auth_groups) role_post = request.POST.get('role', 'CU') ssh_pwd = request.POST.get('ssh_pwd', '') ssh_key_pwd = request.POST.get('ssh_key_pwd', '') diff --git a/templates/foot_script.html b/templates/foot_script.html index fcc41f092..acab8b8a3 100644 --- a/templates/foot_script.html +++ b/templates/foot_script.html @@ -1,5 +1,6 @@ - + + @@ -18,6 +19,10 @@ + + + + - + - + + + - - - + diff --git a/templates/juser/group_add.html b/templates/juser/group_add.html index db20f8506..c5d96d522 100644 --- a/templates/juser/group_add.html +++ b/templates/juser/group_add.html @@ -34,12 +34,6 @@ {% if msg %}
+ 这是段落中的粗体文本。 +
hello
+ + + + + + + + +