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

Fix bug in remove shared repo in group, and clean code.

This commit is contained in:
xiez
2012-05-26 15:31:35 +08:00
parent 5cce21353d
commit cacebb25c5
4 changed files with 19 additions and 15 deletions

View File

@@ -6,7 +6,7 @@ from django.template import RequestContext
from auth.decorators import login_required
from seaserv import ccnet_rpc, seafserv_threaded_rpc, get_repo, \
get_group_repoids
get_group_repoids, check_group_staff
from pysearpc import SearpcError
from seahub.contacts.models import Contact
@@ -53,8 +53,7 @@ def group_remove(request, group_id):
except ValueError:
return HttpResponseRedirect(reverse('group_list', args=[]))
# Check whether use is the group staff
if not ccnet_rpc.check_group_staff(group_id_int, request.user.username):
if not check_group_staff(group_id_int, request.user):
return go_permission_error(request, u'只有小组管理员有权解散小组')
try:
@@ -100,7 +99,7 @@ def group_info(request, group_id):
if not group:
return HttpResponseRedirect(reverse('group_list', args=[]))
if ccnet_rpc.check_group_staff(group.props.id, request.user.username):
if check_group_staff(group.id, request.user):
is_staff = True
else:
is_staff = False
@@ -146,8 +145,7 @@ def group_members(request, group_id):
except ValueError:
return go_error(request, u'group id 不是有效参数')
# Check whether user is the group staff
if not ccnet_rpc.check_group_staff(group_id_int, request.user.username):
if not check_group_staff(group_id_int, request.user):
return go_permission_error(request, u'只有小组管理员有权管理小组')
group = ccnet_rpc.get_group(group_id_int)
@@ -207,8 +205,7 @@ def group_remove_member(request, group_id, user_name):
except ValueError:
return go_error(request, u'group id 不是有效参数')
# Check whether user is the group staff
if not ccnet_rpc.check_group_staff(group_id_int, request.user.username):
if not check_group_staff(group_id_int, request.user):
return go_permission_error(request, u'只有小组管理员有权删除成员')
if not validate_emailuser(user_name):
@@ -270,7 +267,7 @@ def group_unshare_repo(request, repo_id, group_id, from_email):
return go_error(request, u'共享失败:未加入该小组')
# Check whether user is group staff or the one share the repo
if not ccnet_rpc.check_group_staff(group_id, from_email) and \
if not check_group_staff(group_id, from_email) and \
seafserv_threaded_rpc.get_group_repo_share_from(repo_id) != from_email:
return go_permission_error(request, u'取消共享失败:只有小组管理员或共享目录发布者有权取消共享')

View File

@@ -12,7 +12,7 @@ from service import get_users, get_user, get_events, count_event
from service import get_repos, get_repo, get_commits, get_branches
from service import get_binding_peerids
from service import get_ccnetuser
from service import get_group_repoids
from service import get_group_repoids, check_group_staff
from service import CCNET_CONF_PATH

View File

@@ -412,4 +412,10 @@ def get_group_repoids(group_id=None):
repoid_list.append(repo_id)
return repoid_list
def check_group_staff(group_id_int, user_or_username):
"""Check where user is group staff"""
from seahub.base.accounts import CcnetUser
if isinstance(user_or_username, CcnetUser):
user_or_username = user_or_username.username
return ccnet_rpc.check_group_staff(group_id_int, user_or_username)

View File

@@ -16,7 +16,7 @@ from auth.tokens import default_token_generator
from seaserv import ccnet_rpc, get_groups, get_users, get_repos, \
get_repo, get_commits, get_branches, \
seafserv_threaded_rpc, seafserv_rpc, get_binding_peerids, get_ccnetuser, \
get_group_repoids
get_group_repoids, check_group_staff
from pysearpc import SearpcError
from seahub.base.accounts import CcnetUser
@@ -656,13 +656,14 @@ def repo_remove_share(request):
return go_permission_error(request, u'取消共享失败')
seafserv_threaded_rpc.remove_share(repo_id, from_email, to_email)
else:
if not request.user.is_staff and request.user.username != from_email:
return go_permission_error(request, u'取消共享失败')
try:
group_id_int = int(group_id)
except:
return go_error(request, u'group id 不是有效参数')
if not check_group_staff(group_id_int, request.user) \
and request.user.username != from_email:
return go_permission_error(request, u'取消共享失败')
from seahub.group.views import group_unshare_repo
group_unshare_repo(request, repo_id, group_id_int, from_email)