1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-20 02:48:51 +00:00

[inst] Add search user and list admins

This commit is contained in:
zhengxie
2016-06-08 15:39:12 +08:00
parent 390c04ec99
commit 3fac2a79c2
17 changed files with 529 additions and 10 deletions

View File

@@ -2339,7 +2339,7 @@ def sys_inst_remove(request, inst_id):
@login_required
@sys_staff_required
def sys_inst_info_user(request, inst_id):
"""List institution members.
"""List institution members including admins.
"""
try:
inst = Institution.objects.get(pk=inst_id)
@@ -2378,7 +2378,7 @@ def sys_inst_info_user(request, inst_id):
if last_login.username == u.email:
u.last_login = last_login.last_login
users_count = len(users)
users_count = Profile.objects.filter(institution=inst.name).count()
return render_to_response('sysadmin/sys_inst_info_user.html', {
'inst': inst,
@@ -2391,6 +2391,80 @@ def sys_inst_info_user(request, inst_id):
'page_next': page_next,
}, context_instance=RequestContext(request))
@login_required
@sys_staff_required
def sys_inst_search_user(request, inst_id):
"""Search institution members.
"""
try:
inst = Institution.objects.get(pk=inst_id)
except Institution.DoesNotExist:
raise Http404
q = request.GET.get('q', '').lower()
if not q:
return HttpResponseRedirect(reverse('sys_inst_info_users', args=[inst_id]))
profiles = Profile.objects.filter(institution=inst.name)
usernames = [x.user for x in profiles if q in x.user]
users = [User.objects.get(x) for x in usernames]
inst_admins = [x.user for x in InstitutionAdmin.objects.filter(institution=inst)]
last_logins = UserLastLogin.objects.filter(username__in=[x for x in users])
for u in users:
_populate_user_quota_usage(u)
if u.username in inst_admins:
u.inst_admin = True
else:
u.inst_admin = False
# populate user last login time
u.last_login = None
for last_login in last_logins:
if last_login.username == u.email:
u.last_login = last_login.last_login
users_count = Profile.objects.filter(institution=inst.name).count()
return render_to_response('sysadmin/sys_inst_search_user.html', {
'q': q,
'inst': inst,
'users': users,
'users_count': users_count,
}, context_instance=RequestContext(request))
@login_required
@sys_staff_required
def sys_inst_info_admins(request, inst_id):
"""List institution admins.
"""
try:
inst = Institution.objects.get(pk=inst_id)
except Institution.DoesNotExist:
raise Http404
inst_admins = [x.user for x in InstitutionAdmin.objects.filter(institution=inst)]
admins = [User.objects.get(x) for x in inst_admins]
last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in admins])
for u in admins:
_populate_user_quota_usage(u)
# populate user last login time
u.last_login = None
for last_login in last_logins:
if last_login.username == u.email:
u.last_login = last_login.last_login
users_count = Profile.objects.filter(institution=inst.name).count()
return render_to_response('sysadmin/sys_inst_info_admins.html', {
'inst': inst,
'admins': admins,
'users_count': users_count,
}, context_instance=RequestContext(request))
@login_required
@sys_staff_required
@require_POST
@@ -2402,13 +2476,19 @@ def sys_inst_toggle_admin(request, inst_id, email):
except Institution.DoesNotExist:
raise Http404
next = request.META.get('HTTP_REFERER', None)
if not next:
next = reverse('sys_inst_info_users', args=[inst.pk])
try:
u = User.objects.get(email=email)
except User.DoesNotExist:
assert False, 'TODO'
if u.is_staff:
assert False
messages.error(
request, 'Can not assign institutional administration roles to global administrators')
return HttpResponseRedirect(next)
res = InstitutionAdmin.objects.filter(institution=inst, user=email)
if len(res) == 0:
@@ -2420,4 +2500,4 @@ def sys_inst_toggle_admin(request, inst_id, email):
assert False
messages.success(request, _('Success'))
return HttpResponseRedirect(reverse('sys_inst_info_user', args=[inst.pk]))
return HttpResponseRedirect(next)