1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-21 03:18:23 +00:00

[institution] Add institution quota

This commit is contained in:
zhengxie
2016-12-21 17:34:17 +08:00
parent 0c61a22100
commit 81db6a7a0a
11 changed files with 225 additions and 9 deletions

View File

@@ -35,7 +35,9 @@ from seahub.base.templatetags.seahub_tags import tsstr_sec, email2nickname
from seahub.auth import authenticate
from seahub.auth.decorators import login_required, login_required_ajax
from seahub.constants import GUEST_USER, DEFAULT_USER
from seahub.institutions.models import Institution, InstitutionAdmin
from seahub.institutions.models import (Institution, InstitutionAdmin,
InstitutionQuota)
from seahub.institutions.utils import get_institution_space_usage
from seahub.invitations.models import Invitation
from seahub.role_permissions.utils import get_available_roles
from seahub.utils import IS_EMAIL_CONFIGURED, string2list, is_valid_username, \
@@ -2127,6 +2129,8 @@ def sys_inst_info_user(request, inst_id):
u.last_login = last_login.last_login
users_count = Profile.objects.filter(institution=inst.name).count()
space_quota = InstitutionQuota.objects.get_or_none(institution=inst)
space_usage = get_institution_space_usage(inst)
return render_to_response('sysadmin/sys_inst_info_user.html', {
'inst': inst,
@@ -2137,6 +2141,8 @@ def sys_inst_info_user(request, inst_id):
'next_page': current_page + 1,
'per_page': per_page,
'page_next': page_next,
'space_usage': space_usage,
'space_quota': space_quota,
}, context_instance=RequestContext(request))
@login_required
@@ -2250,6 +2256,31 @@ def sys_inst_toggle_admin(request, inst_id, email):
messages.success(request, _('Success'))
return HttpResponseRedirect(next)
@login_required
@sys_staff_required
@require_POST
def sys_inst_set_quota(request, inst_id):
"""Set institution quota"""
try:
inst = Institution.objects.get(pk=inst_id)
except Institution.DoesNotExist:
raise Http404
next = request.META.get('HTTP_REFERER', None)
if not next:
next = reverse('sys_inst_info_users', args=[inst.pk])
quota_mb = int(request.POST.get('space_quota', ''))
quota = quota_mb * get_file_size_unit('MB')
obj, created = InstitutionQuota.objects.update_or_create(
institution=inst,
defaults={'quota': quota},
)
content_type = 'application/json; charset=utf-8'
return HttpResponse(json.dumps({'success': True}), status=200,
content_type=content_type)
@login_required
@sys_staff_required
def sys_invitation_admin(request):