1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-13 13:50:07 +00:00

Merge pull request #240 from bits4beats/master

Implemented the "group removal" and "group rename" API
This commit is contained in:
xiez
2014-06-21 11:13:08 +08:00
2 changed files with 67 additions and 2 deletions

View File

@@ -62,6 +62,7 @@ urlpatterns = patterns('',
url(r'^avatars/group/(?P<group_id>\d+)/resized/(?P<size>[0-9]+)/$', GroupAvatarView.as_view()),
url(r'^groups/$', Groups.as_view()),
url(r'^groups/(?P<group_id>\d+)/$', Groups.as_view()),
url(r'^groups/(?P<group_id>\d+)/members/$', GroupMembers.as_view()),
url(r'^html/events/$', EventsHtml.as_view()),

View File

@@ -85,7 +85,8 @@ from seaserv import seafserv_rpc, seafserv_threaded_rpc, server_repo_size, \
unset_inner_pub_repo, get_user_quota, \
get_user_share_usage, get_user_quota_usage, CALC_SHARE_USAGE, get_group, \
get_commit, get_file_id_by_path, MAX_DOWNLOAD_DIR_SIZE, edit_repo, \
ccnet_threaded_rpc, get_personal_groups, seafile_api, check_group_staff
ccnet_threaded_rpc, get_personal_groups, seafile_api, check_group_staff, \
get_group
logger = logging.getLogger(__name__)
@@ -2452,7 +2453,7 @@ class Groups(APIView):
group_json, replynum = get_groups(request.user.username)
res = {"groups": group_json, "replynum": replynum}
return Response(res)
def put(self, request, format=None):
# modified slightly from groups/views.py::group_list
"""
@@ -2494,6 +2495,69 @@ class Groups(APIView):
result['error'] = e.msg
return HttpResponse(json.dumps(result), status=500,
content_type=content_type)
def delete(self, request, group_id, format=None):
result = {}
content_type = 'application/json; charset=utf-8'
try:
username = request.user.username
group_id_int = int(group_id)
# delete group
ccnet_threaded_rpc.remove_group(group_id_int, username)
return HttpResponse(json.dumps({'success': True}), content_type=content_type)
except Exception, e:
result['error'] = e.msg
return HttpResponse(json.dumps(result), status=500,
content_type=content_type)
def post(self, request, group_id, format=None):
result = {}
content_type = 'application/json; charset=utf-8'
try:
username = request.user.username
operation = request.POST.get('operation', '')
if operation.lower() == 'rename':
newname = request.POST.get('newname', '')
if not newname:
return api_error(status.HTTP_400_BAD_REQUEST,
'Newname is missing')
newname = unquote(newname.encode('utf-8'))
# if len(newname) > settings.MAX_UPLOAD_FILE_NAME_LEN:
# return api_error(status.HTTP_400_BAD_REQUEST, 'Newname too long')
group_id_int = int(group_id)
group = get_group(group_id_int);
if group.group_name == newname:
return api_error(status.HTTP_409_CONFLICT,
'The new name is the same to the old')
# Check whether group name is duplicated.
if request.cloud_mode:
checked_groups = get_personal_groups_by_user(username)
else:
checked_groups = get_personal_groups(-1, -1)
for g in checked_groups:
if g.group_name == newname:
result['error'] = 'There is already a group with that name.'
return HttpResponse(json.dumps(result), status=400,
content_type=content_type)
# rename group
ccnet_threaded_rpc.set_group_name(group_id_int, newname)
return HttpResponse(json.dumps({'success': True}), content_type=content_type)
else:
return api_error(status.HTTP_400_BAD_REQUEST,
"Operation can only be rename.")
except Exception, e:
result['error'] = e.msg
return HttpResponse(json.dumps(result), status=500,
content_type=content_type)
class GroupMembers(APIView):
authentication_classes = (TokenAuthentication, )