def sys_org_admin(request): # Make sure page request is an int. If not, deliver first page. try: current_page = int(request.GET.get('page', '1')) per_page = int(request.GET.get('per_page', '25')) except ValueError: current_page = 1 per_page = 25 orgs_plus_one = ccnet_threaded_rpc.get_all_orgs( per_page * (current_page - 1), per_page + 1) orgs = orgs_plus_one[:per_page] for org in orgs: org.quota_usage = seafserv_threaded_rpc.get_org_quota_usage(org.org_id) org.total_quota = seafserv_threaded_rpc.get_org_quota(org.org_id) if len(orgs_plus_one) == per_page + 1: page_next = True else: page_next = False return render_to_response('sysadmin/sys_org_admin.html', { 'orgs': orgs, 'current_page': current_page, 'prev_page': current_page - 1, 'next_page': current_page + 1, 'per_page': per_page, 'page_next': page_next, }, context_instance=RequestContext(request))
def user_set_quota(request, email): if request.method != 'POST': raise Http404 content_type = 'application/json; charset=utf-8' result = {} f = SetUserQuotaForm(request.POST) if f.is_valid(): space_quota_mb = f.cleaned_data['space_quota'] space_quota = space_quota_mb * get_file_size_unit('MB') org = ccnet_api.get_orgs_by_user(email) try: if not org: seafile_api.set_user_quota(email, space_quota) else: org_id = org[0].org_id org_quota_mb = seafserv_threaded_rpc.get_org_quota(org_id) / get_file_size_unit('MB') if space_quota_mb > org_quota_mb: result['error'] = _('Failed to set quota: maximum quota is %d MB' % \ org_quota_mb) return HttpResponse(json.dumps(result), status=400, content_type=content_type) else: seafile_api.set_org_user_quota(org_id, email, space_quota) except: result['error'] = _('Failed to set quota: internal server error') return HttpResponse(json.dumps(result), status=500, content_type=content_type) result['success'] = True return HttpResponse(json.dumps(result), content_type=content_type) else: result['error'] = str(list(f.errors.values())[0]) return HttpResponse(json.dumps(result), status=400, content_type=content_type)
def sys_get_org_base_info(org_id): org = ccnet_threaded_rpc.get_org_by_id(org_id) # users users = ccnet_threaded_rpc.get_org_emailusers(org.url_prefix, -1, -1) users_count = len(users) # groups groups = ccnet_threaded_rpc.get_org_groups(org_id, -1, -1) groups_count = len(groups) # quota total_quota = seafserv_threaded_rpc.get_org_quota(org_id) quota_usage = seafserv_threaded_rpc.get_org_quota_usage(org_id) return { "org": org, "users": users, "users_count": users_count, "groups": groups, "groups_count": groups_count, "total_quota": total_quota, "quota_usage": quota_usage, }
def sys_org_info(request, org_id): org_id = int(org_id) org = ccnet_threaded_rpc.get_org_by_id(org_id) users = ccnet_threaded_rpc.get_org_emailusers(org.url_prefix, -1, -1) users_count = len(users) # quota total_quota = seafserv_threaded_rpc.get_org_quota(org_id) quota_usage = seafserv_threaded_rpc.get_org_quota_usage(org_id) # groups groups = ccnet_threaded_rpc.get_org_groups(org_id, -1, -1) groups_count = len(groups) return render_to_response('sysadmin/sys_org_info.html', { 'org': org, 'users': users, 'users_count': users_count, 'total_quota': total_quota, 'quota_usage': quota_usage, 'groups': groups, 'groups_count': groups_count, }, context_instance=RequestContext(request))
def sys_org_admin(request): # Make sure page request is an int. If not, deliver first page. try: current_page = int(request.GET.get('page', '1')) per_page = int(request.GET.get('per_page', '25')) except ValueError: current_page = 1 per_page = 25 orgs_plus_one = ccnet_threaded_rpc.get_all_orgs(per_page * (current_page - 1), per_page + 1) orgs = orgs_plus_one[:per_page] for org in orgs: org.quota_usage = seafserv_threaded_rpc.get_org_quota_usage(org.org_id) org.total_quota = seafserv_threaded_rpc.get_org_quota(org.org_id) if len(orgs_plus_one) == per_page + 1: page_next = True else: page_next = False return render_to_response('sysadmin/sys_org_admin.html', { 'orgs': orgs, 'current_page': current_page, 'prev_page': current_page-1, 'next_page': current_page+1, 'per_page': per_page, 'page_next': page_next, }, context_instance=RequestContext(request))
def user_set_quota(request, email): if request.method != 'POST': raise Http404 content_type = 'application/json; charset=utf-8' result = {} f = SetUserQuotaForm(request.POST) if f.is_valid(): email = f.cleaned_data['email'] quota_mb = f.cleaned_data['quota'] quota = quota_mb * (1 << 20) org = ccnet_threaded_rpc.get_orgs_by_user(email) try: if not org: seafile_api.set_user_quota(email, quota) else: org_id = org[0].org_id org_quota_mb = seafserv_threaded_rpc.get_org_quota(org_id) / (1 << 20) if quota_mb > org_quota_mb: result['error'] = _(u'Failed to set quota: maximum quota is %d MB' % \ org_quota_mb) return HttpResponse(json.dumps(result), status=400, content_type=content_type) else: seafserv_threaded_rpc.set_org_user_quota(org_id, email, quota) except: result['error'] = _(u'Failed to set quota: internal server error') return HttpResponse(json.dumps(result), status=500, content_type=content_type) result['success'] = True return HttpResponse(json.dumps(result), content_type=content_type) else: result['error'] = str(f.errors.values()[0]) return HttpResponse(json.dumps(result), status=400, content_type=content_type)
def sys_org_info(request, org_id): org_id = int(org_id) org = ccnet_threaded_rpc.get_org_by_id(org_id) users = ccnet_threaded_rpc.get_org_emailusers(org.url_prefix, -1, -1) users_count = len(users) # quota total_quota = seafserv_threaded_rpc.get_org_quota(org_id) quota_usage = seafserv_threaded_rpc.get_org_quota_usage(org_id) last_logins = UserLastLogin.objects.filter( username__in=[x.email for x in users]) for user in users: if user.id == request.user.id: user.is_self = True try: user.self_usage =seafserv_threaded_rpc. \ get_org_user_quota_usage(org_id, user.email) user.share_usage = 0 #seafile_api.get_user_share_usage(user.email) user.quota = seafserv_threaded_rpc. \ get_org_user_quota(org_id, user.email) except SearpcError as e: logger.error(e) user.self_usage = -1 user.share_usage = -1 user.quota = -1 # populate user last login time user.last_login = None for last_login in last_logins: if last_login.username == user.email: user.last_login = last_login.last_login # groups groups = ccnet_threaded_rpc.get_org_groups(org_id, -1, -1) groups_count = len(groups) return render_to_response('sysadmin/sys_org_info.html', { 'org': org, 'users': users, 'users_count': users_count, 'total_quota': total_quota, 'quota_usage': quota_usage, 'groups': groups, 'groups_count': groups_count, }, context_instance=RequestContext(request))
def sys_org_info(request, org_id): org_id = int(org_id) org = ccnet_threaded_rpc.get_org_by_id(org_id) users = ccnet_threaded_rpc.get_org_emailusers(org.url_prefix, -1, -1) users_count = len(users) # quota total_quota = seafserv_threaded_rpc.get_org_quota(org_id) quota_usage = seafserv_threaded_rpc.get_org_quota_usage(org_id) last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in users]) for user in users: if user.id == request.user.id: user.is_self = True try: user.self_usage =seafserv_threaded_rpc. \ get_org_user_quota_usage(org_id, user.email) user.share_usage = 0 #seafile_api.get_user_share_usage(user.email) user.quota = seafserv_threaded_rpc. \ get_org_user_quota(org_id, user.email) except SearpcError as e: logger.error(e) user.self_usage = -1 user.share_usage = -1 user.quota = -1 # populate user last login time user.last_login = None for last_login in last_logins: if last_login.username == user.email: user.last_login = last_login.last_login # groups groups = ccnet_threaded_rpc.get_org_groups(org_id, -1, -1) groups_count = len(groups) return render_to_response('sysadmin/sys_org_info.html', { 'org': org, 'users': users, 'users_count': users_count, 'total_quota': total_quota, 'quota_usage': quota_usage, 'groups': groups, 'groups_count': groups_count, }, context_instance=RequestContext(request))
def sys_org_admin(request): # Make sure page request is an int. If not, deliver first page. try: current_page = int(request.GET.get('page', '1')) per_page = int(request.GET.get('per_page', '25')) except ValueError: current_page = 1 per_page = 25 orgs_plus_one = ccnet_threaded_rpc.get_all_orgs( per_page * (current_page - 1), per_page + 1) orgs = orgs_plus_one[:per_page] if ENABLE_TRIAL_ACCOUNT: trial_orgs = TrialAccount.objects.filter( user_or_org__in=[x.org_id for x in orgs]) else: trial_orgs = [] for org in orgs: org.quota_usage = seafserv_threaded_rpc.get_org_quota_usage(org.org_id) org.total_quota = seafserv_threaded_rpc.get_org_quota(org.org_id) org.trial_info = None for trial_org in trial_orgs: if trial_org.user_or_org == str(org.org_id): org.trial_info = {'expire_date': trial_org.expire_date} if len(orgs_plus_one) == per_page + 1: page_next = True else: page_next = False return render_to_response('sysadmin/sys_org_admin.html', { 'orgs': orgs, 'current_page': current_page, 'prev_page': current_page - 1, 'next_page': current_page + 1, 'per_page': per_page, 'page_next': page_next, }, context_instance=RequestContext(request))
def sys_org_admin(request): # Make sure page request is an int. If not, deliver first page. try: current_page = int(request.GET.get('page', '1')) per_page = int(request.GET.get('per_page', '25')) except ValueError: current_page = 1 per_page = 25 orgs_plus_one = ccnet_threaded_rpc.get_all_orgs(per_page * (current_page - 1), per_page + 1) orgs = orgs_plus_one[:per_page] if enable_trial_account: trial_orgs = TrialAccount.objects.filter(user_or_org__in=[x.org_id for x in orgs]) else: trial_orgs = [] for org in orgs: org.quota_usage = seafserv_threaded_rpc.get_org_quota_usage(org.org_id) org.total_quota = seafserv_threaded_rpc.get_org_quota(org.org_id) org.trial_info = None for trial_org in trial_orgs: if trial_org.user_or_org == str(org.org_id): org.trial_info = {'expire_date': trial_org.expire_date} if len(orgs_plus_one) == per_page + 1: page_next = True else: page_next = False return render_to_response('sysadmin/sys_org_admin.html', { 'orgs': orgs, 'current_page': current_page, 'prev_page': current_page-1, 'next_page': current_page+1, 'per_page': per_page, 'page_next': page_next, }, context_instance=RequestContext(request))
def org_admin(request, url_prefix): """ List and add org users. """ if request.method == "POST": emails = request.POST.get("added-member-name") email_list = string2list(emails) for email in email_list: if not email or email.find("@") <= 0: continue org_id = request.user.org["org_id"] try: User.objects.get(email=email) email = email.strip(" ") org_id = request.user.org["org_id"] add_org_user(org_id, email, 0) # send signal org_user_added.send(sender=None, org_id=org_id, from_email=request.user.username, to_email=email) except User.DoesNotExist: # User is not registered, just create account and # add that account to org password = gen_token(max_length=6) if Site._meta.installed: site = Site.objects.get_current() else: site = RequestSite(request) RegistrationProfile.objects.create_active_user(email, email, password, site, send_email=False) add_org_user(org_id, email, 0) if hasattr(seahub_settings, "EMAIL_HOST"): org_name = request.user.org["org_name"] send_org_user_add_mail(request, email, password, org_name) # Make sure page request is an int. If not, deliver first page. try: current_page = int(request.GET.get("page", "1")) per_page = int(request.GET.get("per_page", "25")) except ValueError: current_page = 1 per_page = 25 users_plus_one = get_org_users_by_url_prefix(url_prefix, per_page * (current_page - 1), per_page + 1) if len(users_plus_one) == per_page + 1: page_next = True else: page_next = False org = get_user_current_org(request.user.username, url_prefix) if not org: return HttpResponseRedirect(reverse(myhome)) users = users_plus_one[:per_page] for user in users: if user.props.id == request.user.id: user.is_self = True try: user.quota_usage = seafserv_threaded_rpc.get_org_user_quota_usage(org.org_id, user.email) except: user.quota_usage = -1 # My contacts contacts = Contact.objects.filter(user_email=request.user.username) org_quota_usage = seafserv_threaded_rpc.get_org_quota_usage(org.org_id) org_quota = seafserv_threaded_rpc.get_org_quota(org.org_id) return render_to_response( "organizations/org_admin.html", { "users": users, "contacts": contacts, "current_page": current_page, "prev_page": current_page - 1, "next_page": current_page + 1, "per_page": per_page, "page_next": page_next, "org_quota_usage": org_quota_usage, "org_quota": org_quota, }, context_instance=RequestContext(request), )