def _update_account_quota(self, request, email): storage = request.DATA.get("storage", None) sharing = request.DATA.get("sharing", None) if storage is None and sharing is None: return if storage is not None: seafile_api.set_user_quota(email, int(storage)) if sharing is not None: seafile_api.set_user_share_quota(email, int(sharing))
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'] space_quota_mb = f.cleaned_data['space_quota'] space_quota = space_quota_mb * (1 << 20) share_quota_mb = f.cleaned_data['share_quota'] share_quota = None if share_quota_mb is not None: share_quota = share_quota_mb * (1 << 20) org = ccnet_threaded_rpc.get_orgs_by_user(email) try: if not org: seafile_api.set_user_quota(email, space_quota) if share_quota is not None: seafile_api.set_user_share_quota(email, share_quota) else: org_id = org[0].org_id org_quota_mb = seafserv_threaded_rpc.get_org_quota(org_id) / ( 1 << 20) if space_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, space_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 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'] space_quota_mb = f.cleaned_data['space_quota'] space_quota = space_quota_mb * (1 << 20) share_quota_mb = f.cleaned_data['share_quota'] share_quota = None if share_quota_mb is not None: share_quota = share_quota_mb * (1 << 20) org = ccnet_threaded_rpc.get_orgs_by_user(email) try: if not org: seafile_api.set_user_quota(email, space_quota) if share_quota is not None: seafile_api.set_user_share_quota(email, share_quota) else: org_id = org[0].org_id org_quota_mb = seafserv_threaded_rpc.get_org_quota(org_id) / (1 << 20) if space_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, space_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)