修改 用户添加 和 组添加

pull/6/head
guanghongwei 2015-03-02 23:32:34 +08:00
parent d90b59191f
commit ad2a4d2d5d
3 changed files with 48 additions and 45 deletions

View File

@ -9,6 +9,7 @@ import subprocess
from Crypto.PublicKey import RSA
import crypt
from django.http import HttpResponseRedirect
import datetime
from django.shortcuts import render_to_response
from django.core.exceptions import ObjectDoesNotExist
@ -93,12 +94,13 @@ def group_update_user(group_id, users_id):
def db_add_user(**kwargs):
groups_post = kwargs.pop('groups')
user = User(**kwargs)
group_select = []
for group_id in groups_post:
group = UserGroup.objects.filter(id=group_id)
group_select.extend(group)
user.save()
user.user_group = group_select
if groups_post:
group_select = []
for group_id in groups_post:
group = UserGroup.objects.filter(id=group_id)
group_select.extend(group)
user.group = group_select
def db_update_user(**kwargs):
@ -155,7 +157,11 @@ def server_del_user(username):
def ldap_add_user(username, ldap_pwd):
user_dn = "uid=%s,ou=People,%s" % (username, LDAP_BASE_DN)
password_sha512 = gen_sha512(gen_rand_pwd(6), ldap_pwd)
user = User.objects.get(username=username)
user = User.objects.filter(username=username)
if user:
user = user[0]
else:
raise AddError(u'用户 %s 不存在' % username)
user_attr = {'uid': [str(username)],
'cn': [str(username)],
@ -278,14 +284,17 @@ def group_add(request, group_type_select='A'):
error = u'组名 或 部门 不能为空'
raise AddError(error)
group_db_add(name=group_name, comment=comment)
for user_id in users_selected:
group_add_user(group_name, user_id=user_id)
dept = DEPT.objects.filter(id=dept_id)
if dept:
dept = dept[0]
else:
AddError(u'部门不存在')
db_add_group(name=group_name, dept=dept, comment=comment)
except AddError:
pass
except TypeError:
error = u'保存用户组失败'
error = u'保存组失败'
else:
msg = u'添加组 %s 成功' % group_name
@ -294,7 +303,7 @@ def group_add(request, group_type_select='A'):
def group_list(request):
header_title, path1, path2 = '查看属组 | Show Group', '用户管理', '查看用户组'
groups = contact_list = UserGroup.objects.filter(Q(type='M') | Q(type='A')).order_by('type')
contact_list = UserGroup.objects.all()
p = paginator = Paginator(contact_list, 10)
try:
@ -476,14 +485,15 @@ def user_add(request):
header_title, path1, path2 = '添加用户 | User Add', '用户管理', '添加用户'
user_role = {'SU': u'超级管理员', 'DA': u'部门管理员', 'CU': u'普通用户'}
dept_all = DEPT.objects.all()
group_all = UserGroup.objects.all()
if request.method == 'POST':
username = request.POST.get('username', None)
username = request.POST.get('username', '')
password = request.POST.get('password', '')
name = request.POST.get('name', None)
name = request.POST.get('name', '')
email = request.POST.get('email', '')
dept_id = request.POST.get('dept_id')
auth_groups = request.POST.getlist('groups', None)
groups = request.POST.getlist('groups', [])
role_post = request.POST.get('role', 'CU')
ssh_key_pwd = request.POST.get('ssh_key_pwd', '')
is_active = request.POST.get('is_active', '1')
@ -498,24 +508,27 @@ def user_add(request):
error = u'用户 %s 已存在' % username
raise AddError
dept = DEPT.objects.filter(id=dept_id)
if dept:
dept = dept[0]
else:
error = u'部门不存在'
raise AddError(error)
except AddError:
pass
else:
time_now = time.time()
try:
db_add_user(username=username,
password=md5_crypt(password),
name=name, email=email,
name=name, email=email, dept=dept,
groups=groups, role=role_post,
ssh_pwd=CRYPTOR.encrypt(ssh_pwd) if ssh_pwd else '',
ssh_key_pwd=CRYPTOR.encrypt(ssh_key_pwd),
ldap_pwd=CRYPTOR.encrypt(ldap_pwd),
is_active=is_active,
date_joined=time_now)
date_joined=datetime.datetime.now())
server_add_user(username, password, ssh_key_pwd)
group_db_add(name=username, comment=username, type='P')
group_add_user(group_name=username, username=username)
if LDAP_ENABLE:
ldap_add_user(username, ldap_pwd)
msg = u'添加用户 %s 成功!' % username

View File

@ -36,9 +36,8 @@
<table class="table table-striped table-bordered table-hover " id="editable" >
<thead>
<tr>
<th class="text-center">ID</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>
@ -47,10 +46,9 @@
<tbody>
{% for group in contacts.object_list %}
<tr class="gradeX">
<td class="text-center"> {{ group.id }} </td>
<td class="text-center"> {{ group.name }} </td>
<td class="text-center"> {{ group.type|group_type_to_str }} </td>
<td class="text-center"> {{ group.id|member_count }} </td>
<td class="text-center"> {{ group.dept.name }} </td>
<td class="text-center"> {{ group.name }} </td>
<td class="text-center"> {{ group.comment }} </td>
<td class="text-center">
<a title="[ {{ group.name }} ] 成员信息" href="../group_detail/?id={{ group.id }}" class="iframe btn btn-xs btn-primary">成员</a>

View File

@ -39,14 +39,14 @@
<div class="form-group">
<label for="username" class="col-sm-2 control-label">用户名<span class="red-fonts">*</span></label>
<div class="col-sm-8">
<input id="username" name="username" placeholder="Username" type="text" class="form-control" value={{ username }} {{ readonly }}>
<input id="username" name="username" placeholder="Username" type="text" class="form-control" {% if error %}value="{{ username }}" {% endif %}>
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<label for="password" class="col-sm-2 control-label">密码<span class="red-fonts">*</span></label>
<div class="col-sm-8">
<input id="password" name="password" placeholder="Password" type="password" class="form-control" value={{ password }}>
<input id="password" name="password" placeholder="Password" type="password" class="form-control" {% if error %}value="{{ password }}" {% endif %}>
<span class="help-block m-b-none">
登陆web的密码
</span>
@ -56,7 +56,7 @@
<div class="form-group">
<label for="ssh_key_pwd" class="col-sm-2 control-label">密钥密码<span class="red-fonts">*</span></label>
<div class="col-sm-8">
<input id="ssh_key_pwd" name="ssh_key_pwd" placeholder="SSH Key Password" type="password" class="form-control" value="{{ ssh_key_pwd }}">
<input id="ssh_key_pwd" name="ssh_key_pwd" placeholder="SSH Key Password" type="password" class="form-control" {% if error %}value="{{ ssh_key_pwd }}" {% endif %}>
<span class="help-block m-b-none">
登陆 Jumpserver 使用的SSH密钥的密码
</span>
@ -66,14 +66,14 @@
<div class="form-group">
<label for="name" class="col-sm-2 control-label">姓名<span class="red-fonts">*</span></label>
<div class="col-sm-8">
<input id="name" name="name" placeholder="Name" type="text" class="form-control" value={{ name }} >
<input id="name" name="name" placeholder="Name" type="text" class="form-control" {% if error %}value="{{ name }}" {% endif %} >
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<label for="manage_group" class="col-lg-2 control-label">部门<span class="red-fonts">*</span></label>
<label for="dept_id" class="col-lg-2 control-label">部门<span class="red-fonts">*</span></label>
<div class="col-sm-8">
<select id="manage_group" name="manage_group" class="form-control m-b">
<select id="dept_id" name="dept_id" class="form-control m-b">
{% for dept in dept_all %}
<option value="{{ dept.id }}">{{ dept.name }}</option>
{% endfor %}
@ -85,19 +85,11 @@
<label for="groups" class="col-lg-2 control-label">小组</label>
<div class="col-sm-8">
<select id="groups" name="groups" class="form-control m-b" multiple size="12">
{% for group in groups %}
{% if groups_str %}
{% if group.id|int2str in groups_str %}
<option value="{{ group.id }}" selected>{{ group.name }}</option>
{% else %}
<option value="{{ group.id }}">{{ group.name }}</option>
{% endif %}
{% for group in group_all %}
{% if forloop.first %}
<option value="{{ group.id }}" selected>{{ group.name }}</option>
{% else %}
{% if forloop.first %}
<option value="{{ group.id }}" selected>{{ group.name }}</option>
{% else %}
<option value="{{ group.id }}">{{ group.name }}</option>
{% endif %}
<option value="{{ group.id }}">{{ group.name }}</option>
{% endif %}
{% endfor %}
</select>
@ -122,7 +114,7 @@
<div class="form-group">
<label for="email" class="col-sm-2 control-label">Email<span class="red-fonts">*</span></label>
<div class="col-sm-8">
<input id="email" name="email" type="email" placeholder="Email" class="form-control" value="{{ email }}">
<input id="email" name="email" type="email" placeholder="Email" class="form-control" {% if error %}value="{{ email }}" {% endif %}>
</div>
</div>
<div class="hr-line-dashed"></div>
@ -180,7 +172,7 @@ $('#userForm').validator({
ok: "",
msg: {required: "必须填写"}
},
"manage_group": {
"dept_id": {
rule: "checked",
tip: "选择部门",
ok: "",