mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-18 23:18:27 +00:00
update admin transfer group
This commit is contained in:
parent
72efe4f8ea
commit
c7acdce7de
@ -1,21 +1,20 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.utils.translation import ugettext as _
|
|
||||||
|
|
||||||
from rest_framework.authentication import SessionAuthentication
|
from rest_framework.authentication import SessionAuthentication
|
||||||
from rest_framework.permissions import IsAdminUser
|
from rest_framework.permissions import IsAdminUser
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
|
|
||||||
|
from django.utils.translation import ugettext as _
|
||||||
|
|
||||||
from seaserv import seafile_api, ccnet_api
|
from seaserv import seafile_api, ccnet_api
|
||||||
from pysearpc import SearpcError
|
from pysearpc import SearpcError
|
||||||
|
|
||||||
from seahub.base.accounts import User
|
from seahub.base.accounts import User
|
||||||
from seahub.utils import is_valid_username
|
from seahub.utils import is_valid_username
|
||||||
from seahub.utils.timeutils import timestamp_to_isoformat_timestr
|
from seahub.utils.timeutils import timestamp_to_isoformat_timestr
|
||||||
from seahub.group.utils import is_group_member, is_group_admin, \
|
from seahub.group.utils import is_group_member, is_group_admin
|
||||||
is_group_owner
|
|
||||||
|
|
||||||
from seahub.api2.utils import api_error
|
from seahub.api2.utils import api_error
|
||||||
from seahub.api2.throttling import UserRateThrottle
|
from seahub.api2.throttling import UserRateThrottle
|
||||||
@ -103,11 +102,6 @@ class AdminGroup(APIView):
|
|||||||
error_msg = 'new_owner %s invalid.' % new_owner
|
error_msg = 'new_owner %s invalid.' % new_owner
|
||||||
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
|
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
|
||||||
|
|
||||||
old_owner = request.data.get('old_owner', None)
|
|
||||||
if not old_owner or not is_valid_username(old_owner):
|
|
||||||
error_msg = 'old_owner %s invalid.' % old_owner
|
|
||||||
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
|
|
||||||
|
|
||||||
# recourse check
|
# recourse check
|
||||||
group_id = int(group_id) # Checked by URL Conf
|
group_id = int(group_id) # Checked by URL Conf
|
||||||
group = ccnet_api.get_group(group_id)
|
group = ccnet_api.get_group(group_id)
|
||||||
@ -123,16 +117,8 @@ class AdminGroup(APIView):
|
|||||||
error_msg = 'User %s not found.' % new_owner
|
error_msg = 'User %s not found.' % new_owner
|
||||||
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
|
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
|
||||||
|
|
||||||
|
old_owner = group.creator_name
|
||||||
if new_owner == old_owner:
|
if new_owner == old_owner:
|
||||||
error_msg = 'new_owner %s is the same as old_owner %s.' % \
|
|
||||||
(new_owner, old_owner)
|
|
||||||
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
|
|
||||||
|
|
||||||
if not is_group_owner(group_id, old_owner):
|
|
||||||
error_msg = _(u'User %s is not group owner.') % old_owner
|
|
||||||
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
|
|
||||||
|
|
||||||
if is_group_owner(group_id, new_owner):
|
|
||||||
error_msg = _(u'User %s is already group owner.') % new_owner
|
error_msg = _(u'User %s is already group owner.') % new_owner
|
||||||
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
|
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
|
||||||
|
|
||||||
|
@ -93,8 +93,7 @@ define([
|
|||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
beforeSend: Common.prepareCSRFToken,
|
beforeSend: Common.prepareCSRFToken,
|
||||||
data: {
|
data: {
|
||||||
'new_owner': email,
|
'new_owner': email
|
||||||
'old_owner': cur_owner
|
|
||||||
},
|
},
|
||||||
success: function() {
|
success: function() {
|
||||||
$.modal.close();
|
$.modal.close();
|
||||||
|
@ -37,7 +37,7 @@ class GroupTest(BaseTestCase):
|
|||||||
self.login_as(self.admin)
|
self.login_as(self.admin)
|
||||||
|
|
||||||
url = reverse('api-v2.1-admin-group', args=[self.group_id])
|
url = reverse('api-v2.1-admin-group', args=[self.group_id])
|
||||||
data = 'old_owner=%s&new_owner=%s' % (self.user_name, self.admin_name)
|
data = 'new_owner=%s' % self.admin_name
|
||||||
resp = self.client.put(url, data, 'application/x-www-form-urlencoded')
|
resp = self.client.put(url, data, 'application/x-www-form-urlencoded')
|
||||||
|
|
||||||
self.assertEqual(200, resp.status_code)
|
self.assertEqual(200, resp.status_code)
|
||||||
@ -49,7 +49,7 @@ class GroupTest(BaseTestCase):
|
|||||||
self.login_as(self.user)
|
self.login_as(self.user)
|
||||||
|
|
||||||
url = reverse('api-v2.1-admin-group', args=[self.group_id])
|
url = reverse('api-v2.1-admin-group', args=[self.group_id])
|
||||||
data = 'old_owner=%s&new_owner=%s' % (self.user_name, self.admin_name)
|
data = 'new_owner=%s' % self.admin_name
|
||||||
resp = self.client.put(url, data, 'application/x-www-form-urlencoded')
|
resp = self.client.put(url, data, 'application/x-www-form-urlencoded')
|
||||||
|
|
||||||
self.assertEqual(403, resp.status_code)
|
self.assertEqual(403, resp.status_code)
|
||||||
@ -58,33 +58,15 @@ class GroupTest(BaseTestCase):
|
|||||||
|
|
||||||
self.login_as(self.admin)
|
self.login_as(self.admin)
|
||||||
|
|
||||||
# invalid old owner
|
|
||||||
url = reverse('api-v2.1-admin-group', args=[self.group_id])
|
|
||||||
data = 'invalid_old_owner=%s&new_owner=%s' % (self.user_name, self.admin_name)
|
|
||||||
resp = self.client.put(url, data, 'application/x-www-form-urlencoded')
|
|
||||||
self.assertEqual(400, resp.status_code)
|
|
||||||
|
|
||||||
# invalid new owner
|
# invalid new owner
|
||||||
url = reverse('api-v2.1-admin-group', args=[self.group_id])
|
url = reverse('api-v2.1-admin-group', args=[self.group_id])
|
||||||
data = 'old_owner=%s&invalid_new_owner=%s' % (self.user_name, self.admin_name)
|
data = 'invalid_new_owner=%s' % self.admin_name
|
||||||
resp = self.client.put(url, data, 'application/x-www-form-urlencoded')
|
|
||||||
self.assertEqual(400, resp.status_code)
|
|
||||||
|
|
||||||
# new_owner is the same as old_owner
|
|
||||||
url = reverse('api-v2.1-admin-group', args=[self.group_id])
|
|
||||||
data = 'old_owner=%s&new_owner=%s' % (self.user_name, self.user_name)
|
|
||||||
resp = self.client.put(url, data, 'application/x-www-form-urlencoded')
|
|
||||||
self.assertEqual(400, resp.status_code)
|
|
||||||
|
|
||||||
# old_owner is not group owner.
|
|
||||||
url = reverse('api-v2.1-admin-group', args=[self.group_id])
|
|
||||||
data = 'old_owner=%s&new_owner=%s' % (self.admin_name, self.admin_name)
|
|
||||||
resp = self.client.put(url, data, 'application/x-www-form-urlencoded')
|
resp = self.client.put(url, data, 'application/x-www-form-urlencoded')
|
||||||
self.assertEqual(400, resp.status_code)
|
self.assertEqual(400, resp.status_code)
|
||||||
|
|
||||||
# new owner not exist
|
# new owner not exist
|
||||||
url = reverse('api-v2.1-admin-group', args=[self.group_id])
|
url = reverse('api-v2.1-admin-group', args=[self.group_id])
|
||||||
data = 'old_owner=%s&new_owner=%s' % (self.user_name, 'invalid@user.com')
|
data = 'new_owner=invalid@email.com'
|
||||||
resp = self.client.put(url, data, 'application/x-www-form-urlencoded')
|
resp = self.client.put(url, data, 'application/x-www-form-urlencoded')
|
||||||
self.assertEqual(404, resp.status_code)
|
self.assertEqual(404, resp.status_code)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user