mirror of https://github.com/jumpserver/jumpserver
先这样
parent
a2ede31ae6
commit
386d6a1cb2
|
@ -192,7 +192,6 @@ def view_splitter(request, su=None, adm=None):
|
||||||
raise Http404
|
raise Http404
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def user_perm_group_api(user):
|
def user_perm_group_api(user):
|
||||||
if user:
|
if user:
|
||||||
perm_list = []
|
perm_list = []
|
||||||
|
@ -233,3 +232,43 @@ def asset_perm_api(asset):
|
||||||
for user_group in user_group_list:
|
for user_group in user_group_list:
|
||||||
user_permed_list.extend(user_group.user_set.all())
|
user_permed_list.extend(user_group.user_set.all())
|
||||||
return user_permed_list
|
return user_permed_list
|
||||||
|
|
||||||
|
|
||||||
|
def validate(request, user_group=None, user=None, asset_group=None, asset=None):
|
||||||
|
dept = get_session_user_dept(request)[1]
|
||||||
|
if user_group:
|
||||||
|
dept_user_groups = dept.usergroup_set.all()
|
||||||
|
user_groups = []
|
||||||
|
for user_group_id in user_group:
|
||||||
|
user_groups.extend(UserGroup.objects.filter(id=user_group_id))
|
||||||
|
if not set(user_groups).issubset(set(dept_user_groups)):
|
||||||
|
return False
|
||||||
|
|
||||||
|
if user:
|
||||||
|
dept_users = dept.user_set.all()
|
||||||
|
users = []
|
||||||
|
for user_id in user:
|
||||||
|
users.extend(User.objects.filter(id=user_id))
|
||||||
|
|
||||||
|
if not set(users).issubset(set(dept_users)):
|
||||||
|
return False
|
||||||
|
|
||||||
|
if asset_group:
|
||||||
|
dept_asset_groups = dept.bisgroup_set.all()
|
||||||
|
asset_groups = []
|
||||||
|
for asset_group_id in asset_group:
|
||||||
|
asset_groups.extend(BisGroup.objects.filter(id=asset_group_id))
|
||||||
|
|
||||||
|
if not set(asset_groups).issubset(set(dept_asset_groups)):
|
||||||
|
return False
|
||||||
|
|
||||||
|
if asset:
|
||||||
|
dept_assets = dept.asset_set.all()
|
||||||
|
assets = []
|
||||||
|
for asset_id in asset:
|
||||||
|
assets.extend(asset_id)
|
||||||
|
|
||||||
|
if not set(assets).issubset(dept_assets):
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
|
@ -18,7 +18,7 @@ urlpatterns = patterns('juser.views',
|
||||||
(r'^group_detail/$', 'group_detail'),
|
(r'^group_detail/$', 'group_detail'),
|
||||||
(r'^group_del/$', 'group_del'),
|
(r'^group_del/$', 'group_del'),
|
||||||
(r'^group_del_ajax/$', 'group_del_ajax'),
|
(r'^group_del_ajax/$', 'group_del_ajax'),
|
||||||
(r'^group_edit/$', 'group_edit'),
|
(r'^group_edit/$', view_splitter, {'su': group_edit, 'adm': group_edit_adm}),
|
||||||
(r'^user_add/$', 'user_add'),
|
(r'^user_add/$', 'user_add'),
|
||||||
(r'^user_list/$', 'user_list'),
|
(r'^user_list/$', 'user_list'),
|
||||||
(r'^user_detail/$', 'user_detail'),
|
(r'^user_detail/$', 'user_detail'),
|
||||||
|
|
|
@ -444,7 +444,7 @@ def group_update_member(group_id, users_id_list):
|
||||||
group.user_set.add(user)
|
group.user_set.add(user)
|
||||||
|
|
||||||
|
|
||||||
@require_admin
|
@require_super_user
|
||||||
def group_edit(request):
|
def group_edit(request):
|
||||||
error = ''
|
error = ''
|
||||||
msg = ''
|
msg = ''
|
||||||
|
@ -492,6 +492,56 @@ def group_edit(request):
|
||||||
return HttpResponseRedirect('/juser/group_list/')
|
return HttpResponseRedirect('/juser/group_list/')
|
||||||
|
|
||||||
|
|
||||||
|
@require_admin
|
||||||
|
def group_edit_adm(request):
|
||||||
|
error = ''
|
||||||
|
msg = ''
|
||||||
|
header_title, path1, path2 = '淇敼灏忕粍淇℃伅', '鐢ㄦ埛绠$悊', '缂栬緫灏忕粍'
|
||||||
|
if request.method == 'GET':
|
||||||
|
group_id = request.GET.get('id', '')
|
||||||
|
if not validate(request, user_group=[group_id]):
|
||||||
|
return HttpResponseRedirect('/juser/group_list/')
|
||||||
|
group = UserGroup.objects.filter(id=group_id)
|
||||||
|
if group:
|
||||||
|
group = group[0]
|
||||||
|
dept_all = DEPT.objects.all()
|
||||||
|
users_all = User.objects.all()
|
||||||
|
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_edit.html', locals(), context_instance=RequestContext(request))
|
||||||
|
else:
|
||||||
|
group_id = request.POST.get('group_id', '')
|
||||||
|
group_name = request.POST.get('group_name', '')
|
||||||
|
dept_id = request.POST.get('dept_id', '')
|
||||||
|
comment = request.POST.get('comment', '')
|
||||||
|
users_selected = request.POST.getlist('users_selected')
|
||||||
|
|
||||||
|
users = []
|
||||||
|
try:
|
||||||
|
if '' in [group_id, group_name]:
|
||||||
|
raise AddError('缁勫悕涓嶈兘涓虹┖')
|
||||||
|
dept = DEPT.objects.filter(id=dept_id)
|
||||||
|
if dept:
|
||||||
|
dept = dept[0]
|
||||||
|
else:
|
||||||
|
raise AddError('閮ㄩ棬涓嶅瓨鍦')
|
||||||
|
for user_id in users_selected:
|
||||||
|
users.extend(User.objects.filter(id=user_id))
|
||||||
|
|
||||||
|
user_group = UserGroup.objects.filter(id=group_id)
|
||||||
|
if user_group:
|
||||||
|
user_group.update(name=group_name, comment=comment, dept=dept)
|
||||||
|
user_group = user_group[0]
|
||||||
|
user_group.user_set.clear()
|
||||||
|
user_group.user_set = users
|
||||||
|
|
||||||
|
except AddError, e:
|
||||||
|
error = e
|
||||||
|
|
||||||
|
return HttpResponseRedirect('/juser/group_list/')
|
||||||
|
|
||||||
|
|
||||||
@require_admin
|
@require_admin
|
||||||
def user_add(request):
|
def user_add(request):
|
||||||
error = ''
|
error = ''
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
<input id="group_name" name="group_name" placeholder="Group name" type="text" class="form-control" value="{{ group.name }}">
|
<input id="group_name" name="group_name" placeholder="Group name" type="text" class="form-control" value="{{ group.name }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{% ifequal session_role_id 2 %}
|
||||||
<div class="hr-line-dashed"></div>
|
<div class="hr-line-dashed"></div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="dept_id" class="col-sm-2 control-label">閮ㄩ棬<span class="red-fonts">*</span></label>
|
<label for="dept_id" class="col-sm-2 control-label">閮ㄩ棬<span class="red-fonts">*</span></label>
|
||||||
|
@ -56,6 +57,7 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{% endifequal %}
|
||||||
<div class="hr-line-dashed"></div>
|
<div class="hr-line-dashed"></div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="users" class="col-lg-2 control-label">鐢ㄦ埛</label>
|
<label for="users" class="col-lg-2 control-label">鐢ㄦ埛</label>
|
||||||
|
|
Loading鈥
Reference in New Issue