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:
@@ -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'))
|
||||
|
Reference in New Issue
Block a user