mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-16 23:29:49 +00:00
Add discuss module to public group, do not show email in user profile
This commit is contained in:
100
group/views.py
100
group/views.py
@@ -59,6 +59,12 @@ from seahub.forms import RepoCreateForm, SharedRepoCreateForm
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def is_group_staff(group, user):
|
||||
if user.is_anonymous():
|
||||
return False
|
||||
return ccnet_threaded_rpc.check_group_staff(group.id, user.username)
|
||||
|
||||
|
||||
def group_check(func):
|
||||
"""
|
||||
Decorator for initial group permission check tasks
|
||||
@@ -89,8 +95,7 @@ def group_check(func):
|
||||
joined = is_group_user(group_id_int, request.user.username)
|
||||
if joined:
|
||||
group.view_perm = "joined"
|
||||
if check_group_staff(group.id, request.user):
|
||||
group.is_staff = True
|
||||
group.is_staff = is_group_staff(group, user)
|
||||
return func(request, group, *args, **kwargs)
|
||||
if request.user.is_staff:
|
||||
# viewed by system admin
|
||||
@@ -187,31 +192,23 @@ def group_dismiss(request, group_id):
|
||||
"""
|
||||
Dismiss a group, only group staff can perform this operation.
|
||||
"""
|
||||
next = request.META.get('HTTP_REFERER', None)
|
||||
if not next:
|
||||
next = SITE_ROOT
|
||||
|
||||
try:
|
||||
group_id_int = int(group_id)
|
||||
except ValueError:
|
||||
return HttpResponseRedirect(next)
|
||||
return HttpResponseRedirect(reverse('group_list', args=[]))
|
||||
|
||||
group = get_group(group_id_int)
|
||||
if not group:
|
||||
return HttpResponseRedirect(reverse('group_list', args=[]))
|
||||
|
||||
# Check whether user is group staff
|
||||
user = request.user.username
|
||||
if not ccnet_threaded_rpc.check_group_staff(group_id_int, user):
|
||||
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_int, user)
|
||||
seafserv_threaded_rpc.remove_repo_group(group_id_int, 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]))
|
||||
|
||||
ccnet_threaded_rpc.remove_group(group.id, username)
|
||||
seafserv_threaded_rpc.remove_repo_group(group.id, None)
|
||||
except SearpcError, e:
|
||||
return render_error(request, _(e.msg))
|
||||
|
||||
@@ -222,8 +219,8 @@ def group_quit(request, group_id):
|
||||
try:
|
||||
group_id_int = int(group_id)
|
||||
except ValueError:
|
||||
return render_error(request, _(u'group id is not a valid argument.'))
|
||||
|
||||
return HttpResponseRedirect(reverse('group_list', args=[]))
|
||||
|
||||
try:
|
||||
ccnet_threaded_rpc.quit_group(group_id_int, request.user.username)
|
||||
seafserv_threaded_rpc.remove_repo_group(group_id_int,
|
||||
@@ -239,11 +236,14 @@ def group_message_remove(request, group_id, msg_id):
|
||||
Remove group message and all message replies and attachments.
|
||||
"""
|
||||
# Checked by URL Conf
|
||||
group_id = int(group_id)
|
||||
group_id_int = int(group_id)
|
||||
msg_id = int(msg_id)
|
||||
|
||||
group = get_group(group_id_int)
|
||||
if not group:
|
||||
raise Http404
|
||||
|
||||
# Test whether user is in the group
|
||||
if not is_group_user(group_id, request.user.username):
|
||||
if not is_group_user(group, request.user):
|
||||
raise Http404
|
||||
|
||||
try:
|
||||
@@ -253,7 +253,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) or \
|
||||
gm.from_email == request.user.username:
|
||||
gm.delete()
|
||||
return HttpResponse(json.dumps({'success': True}),
|
||||
@@ -362,18 +362,18 @@ def msg_reply_new(request):
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def group_info_for_anonymous(request, group):
|
||||
return render_to_response("group/group_info_for_anonymous.html", {
|
||||
def group_info_for_pub(request, group):
|
||||
return render_to_response("group/group_info_for_pub.html", {
|
||||
"repos": [],
|
||||
"group" : group,
|
||||
}, context_instance=RequestContext(request));
|
||||
"group": group,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
@group_check
|
||||
def group_info(request, group):
|
||||
|
||||
if group.view_perm == "pub":
|
||||
return group_info_for_anonymous(request, group)
|
||||
return group_info_for_pub(request, group)
|
||||
|
||||
# Get all group members.
|
||||
members = get_group_members(group.id)
|
||||
@@ -414,9 +414,11 @@ def group_info(request, group):
|
||||
|
||||
@login_required
|
||||
@group_staff_required
|
||||
@group_check
|
||||
def group_manage(request, group):
|
||||
|
||||
def group_manage(request, group_id):
|
||||
group_id_int = int(group_id) # Checked by URL Conf
|
||||
group = get_group(group_id_int)
|
||||
if not group:
|
||||
return HttpResponseRedirect(reverse('group_list', args=[]))
|
||||
user = request.user.username
|
||||
|
||||
if request.method == 'POST':
|
||||
@@ -602,21 +604,25 @@ def group_member_operations(request, group_id, user_name):
|
||||
else:
|
||||
return HttpResponseRedirect(reverse('group_manage', args=[group_id]))
|
||||
|
||||
@login_required
|
||||
|
||||
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'))
|
||||
|
||||
if not check_group_staff(group_id_int, request.user):
|
||||
return render_error(request, _(u'group id is not valid'))
|
||||
|
||||
group = get_group(group_id_int)
|
||||
if not group:
|
||||
raise Http404
|
||||
|
||||
if not is_group_staff(group, request.user):
|
||||
raise Http404
|
||||
|
||||
try:
|
||||
ccnet_threaded_rpc.group_remove_member(group_id_int,
|
||||
ccnet_threaded_rpc.group_remove_member(group.id,
|
||||
request.user.username,
|
||||
user_name)
|
||||
seafserv_threaded_rpc.remove_repo_group(group_id_int, user_name)
|
||||
seafserv_threaded_rpc.remove_repo_group(group.id, user_name)
|
||||
messages.success(request, _(u'Operation succeeded.'))
|
||||
except SearpcError, e:
|
||||
messages.error(request, _(u'Failed:%s') % _(e.msg))
|
||||
@@ -728,7 +734,8 @@ def create_group_repo(request, group_id):
|
||||
return HttpResponseBadRequest(json.dumps(result),
|
||||
content_type=content_type)
|
||||
group_id = int(group_id)
|
||||
if not get_group(group_id):
|
||||
group = get_group(group_id)
|
||||
if not group:
|
||||
return json_error(_(u'Failed to create: the group does not exist.'))
|
||||
|
||||
# Check whether user belongs to the group.
|
||||
@@ -746,7 +753,7 @@ def create_group_repo(request, group_id):
|
||||
passwd = form.cleaned_data['passwd']
|
||||
user = request.user.username
|
||||
|
||||
org, base_template = check_and_get_org_by_group(group_id, user)
|
||||
org, base_template = check_and_get_org_by_group(group.id, user)
|
||||
if org:
|
||||
# create group repo in org context
|
||||
try:
|
||||
@@ -760,7 +767,7 @@ def create_group_repo(request, group_id):
|
||||
try:
|
||||
status = seafserv_threaded_rpc.add_org_group_repo(repo_id,
|
||||
org.org_id,
|
||||
group_id,
|
||||
group.id,
|
||||
user,
|
||||
permission)
|
||||
except SearpcError, e:
|
||||
@@ -782,7 +789,7 @@ def create_group_repo(request, group_id):
|
||||
|
||||
try:
|
||||
status = seafserv_threaded_rpc.group_share_repo(repo_id,
|
||||
group_id,
|
||||
group.id,
|
||||
user,
|
||||
permission)
|
||||
except SearpcError, e:
|
||||
@@ -809,7 +816,7 @@ def group_joinrequest(request, group_id):
|
||||
content_type = 'application/json; charset=utf-8'
|
||||
|
||||
group_id = int(group_id)
|
||||
group =get_group(group_id)
|
||||
group = get_group(group_id)
|
||||
if not group:
|
||||
raise Http404
|
||||
|
||||
@@ -933,10 +940,7 @@ def group_discuss(request, group):
|
||||
detail=str(group.id)).delete()
|
||||
|
||||
# Get all group members.
|
||||
if group.view_perm == "pub":
|
||||
members = []
|
||||
else:
|
||||
members = get_group_members(group.id)
|
||||
members = get_group_members(group.id)
|
||||
|
||||
"""group messages"""
|
||||
# Show 15 group messages per page.
|
||||
|
Reference in New Issue
Block a user