1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-25 06:33:48 +00:00

[institutions] Inst add user

This commit is contained in:
zming
2017-07-28 13:24:41 +08:00
committed by llj
parent d597623b14
commit 53b795faf8
10 changed files with 375 additions and 12 deletions

View File

@@ -58,7 +58,7 @@ from seahub.forms import SetUserQuotaForm, AddUserForm, BatchAddUserForm, \
TermsAndConditionsForm
from seahub.options.models import UserOptions
from seahub.profile.models import Profile, DetailedProfile
from seahub.signals import repo_deleted
from seahub.signals import repo_deleted, institution_deleted
from seahub.share.models import FileShare, UploadLinkShare
from seahub.admin_log.signals import admin_operation
from seahub.admin_log.models import USER_DELETE, USER_ADD
@@ -228,11 +228,15 @@ def sys_user_admin(request):
if trial_user.user_or_org == user.email:
user.trial_info = {'expire_date': trial_user.expire_date}
profile = Profile.objects.get_profile_by_user(user.email)
user.institution = profile.institution if profile else ''
platform = get_platform_name()
server_id = get_server_id()
pro_server = 1 if is_pro_version() else 0
extra_user_roles = [x for x in get_available_roles()
if x not in get_basic_user_roles()]
institutions = [inst.name for inst in Institution.objects.all()]
return render_to_response(
'sysadmin/sys_useradmin.html', {
@@ -251,6 +255,8 @@ def sys_user_admin(request):
'pro_server': pro_server,
'enable_user_plan': enable_user_plan,
'extra_user_roles': extra_user_roles,
'institutions': institutions,
'multi_institution': getattr(dj_settings, 'MULTI_INSTITUTION', False),
}, context_instance=RequestContext(request))
@login_required
@@ -2092,6 +2098,55 @@ def sys_inst_admin(request):
'page_next': page_next,
}, context_instance=RequestContext(request))
@login_required
@sys_staff_required
def sys_inst_search_inst(request):
key = request.GET.get('q', '')
if not key:
return HttpResponse(json.dumps({'error': "q invalid"}),
status=400)
institutions = [dict([('name', inst.name)]) for inst in Institution.objects.filter(name__contains=key)]
institutions.append({'name': 'None'})
return HttpResponse(json.dumps({"insts": institutions}), status=200,
content_type='application/json; charset=utf-8')
@login_required
@sys_staff_required
@require_POST
def sys_inst_add_user(request, inst_id):
content_type = 'application/json; charset=utf-8'
get_email = request.POST.get('email', '')
email_list = [em.strip() for em in get_email.split(',') if em.strip()]
if len(email_list) == 0:
return HttpResponse(json.dumps({'error': "User can't be empty"}),
status=400)
try:
inst = Institution.objects.get(pk=inst_id)
except Institution.DoesNotExist:
return HttpResponse(json.dumps({'error': "Inst does not exists"}),
status=400)
for email in email_list:
try:
User.objects.get(email=email)
except Exception as e:
messages.error(request, u'Failed to add %s to institution: user does not exist.' % email)
continue
profile = Profile.objects.get_profile_by_user(email)
if not profile:
profile = Profile.objects.add_or_update(email, email)
if profile.institution:
messages.error(request, _(u"Failed to add %s to institution: user already have institution") % email)
continue
else:
profile.institution = inst.name
profile.save()
messages.success(request, _(u'Successfully add %s to institution.') % email)
return HttpResponse(json.dumps({'success': True}),
content_type=content_type)
@login_required
@sys_staff_required
@require_POST
@@ -2103,7 +2158,9 @@ def sys_inst_remove(request, inst_id):
except Institution.DoesNotExist:
raise Http404
inst_name = inst.name
inst.delete()
institution_deleted.send(sender=None, inst_name = inst_name)
messages.success(request, _('Success'))
return HttpResponseRedirect(reverse('sys_inst_admin'))