From 574c62d7af3c08186c76f0ed2e26188356fb3c84 Mon Sep 17 00:00:00 2001 From: zhengxie Date: Sat, 30 Mar 2013 11:03:54 +0800 Subject: [PATCH] Remove user from check_group_staff --- avatar/views.py | 2 +- group/decorators.py | 2 +- group/views.py | 24 +++++++++++++----------- share/views.py | 2 +- views/__init__.py | 2 +- 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/avatar/views.py b/avatar/views.py index ee6179c123..9469fdc506 100644 --- a/avatar/views.py +++ b/avatar/views.py @@ -102,7 +102,7 @@ def add(request, extra_context=None, next_override=None, def group_add(request, gid): group_id_int = int(gid) # Checked by URL Conf - if not check_group_staff(group_id_int, request.user): + if not check_group_staff(group_id_int, request.user.username): raise Http404 group = ccnet_threaded_rpc.get_group(group_id_int) diff --git a/group/decorators.py b/group/decorators.py index 12fc8a840c..5c1eb0afb9 100644 --- a/group/decorators.py +++ b/group/decorators.py @@ -10,7 +10,7 @@ def group_staff_required(func): def _decorated(request, *args, **kwargs): group_id = int(kwargs.get('group_id', '0')) # Checked by URL Conf - if check_group_staff(group_id, request.user): + if check_group_staff(group_id, request.user.username): return func(request, *args, **kwargs) raise Http404 return _decorated diff --git a/group/views.py b/group/views.py index d6fdc98e2d..06c9ba024c 100644 --- a/group/views.py +++ b/group/views.py @@ -188,6 +188,7 @@ def group_remove(request, group_id): return HttpResponseRedirect(next) @login_required +@group_staff_required def group_dismiss(request, group_id): """ Dismiss a group, only group staff can perform this operation. @@ -201,14 +202,18 @@ def group_dismiss(request, group_id): if not group: return HttpResponseRedirect(reverse('group_list', args=[])) - # Check whether user is group staff - if not is_group_staff(group, request.user): - return render_permission_error(request, _(u'Only administrators can dismiss the group')) - username = request.user.username try: ccnet_threaded_rpc.remove_group(group.id, username) seafserv_threaded_rpc.remove_repo_group(group.id, None) + + if request.user.org: + org_id = request.user.org['org_id'] + url_prefix = request.user.org['url_prefix'] + ccnet_threaded_rpc.remove_org_group(org_id, group_id_int) + return HttpResponseRedirect(reverse('org_groups', + args=[url_prefix])) + except SearpcError, e: return render_error(request, _(e.msg)) @@ -302,7 +307,7 @@ def group_message_remove(request, group_id, msg_id): content_type='application/json; charset=utf-8') else: # Test whether user is group admin or message owner. - if check_group_staff(group.id, request.user) or \ + if check_group_staff(group_id, request.user.username) or \ gm.from_email == request.user.username: gm.delete() return HttpResponse(json.dumps({'success': True}), @@ -659,19 +664,15 @@ def group_member_operations(request, group_id, user_name): else: return HttpResponseRedirect(reverse('group_manage', args=[group_id])) - def group_remove_member(request, group_id, user_name): - try: - group_id_int = int(group_id) - except ValueError: - return render_error(request, _(u'group id is not valid')) + group_id_int = int(group_id) # Checked by URLConf group = get_group(group_id_int) if not group: raise Http404 if not is_group_staff(group, request.user): - raise Http404 + raise Http404 try: ccnet_threaded_rpc.group_remove_member(group.id, @@ -1147,6 +1148,7 @@ def convert_wiki_link(content, group, repo_id, username): @group_check def group_wiki(request, group, page_name="home"): username = request.user.username + is_staff = check_group_staff(group.id, username) content = '' wiki_exists = True last_modified, latest_contributor = None, None diff --git a/share/views.py b/share/views.py index ffe7d575ce..40fb8d4a78 100644 --- a/share/views.py +++ b/share/views.py @@ -168,7 +168,7 @@ def repo_remove_share(request): except: return render_error(request, _(u'group id is not valid')) - if not check_group_staff(group_id_int, request.user) \ + if not check_group_staff(group_id_int, request.user.username) \ and request.user.username != from_email: return render_permission_error(request, _(u'Failed to remove share')) diff --git a/views/__init__.py b/views/__init__.py index dd00c0857e..3e60aa3fd5 100644 --- a/views/__init__.py +++ b/views/__init__.py @@ -31,7 +31,7 @@ from auth import authenticate from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_repos, get_emailusers, \ get_repo, get_commits, get_branches, is_valid_filename, remove_group_user,\ seafserv_threaded_rpc, seafserv_rpc, get_binding_peerids, is_repo_owner, \ - check_group_staff, get_personal_groups_by_user, is_inner_pub_repo, \ + get_personal_groups_by_user, is_inner_pub_repo, \ del_org_group_repo, get_personal_groups, web_get_access_token, remove_repo, \ get_group, get_shared_groups_by_repo, is_group_user, check_permission, \ list_personal_shared_repos, is_org_group, get_org_id_by_group, is_org_repo,\