diff --git a/group/templates/group/group_info.html b/group/templates/group/group_info.html
index 4731192490..dc383b028a 100644
--- a/group/templates/group/group_info.html
+++ b/group/templates/group/group_info.html
@@ -31,7 +31,7 @@
{% grp_avatar group.props.id 48 %}
{{ group.creator_name|email2nickname }} {% trans "created at" %}
{{ group.timestamp|tsstr_day }}
{% if not is_staff %}
- {% trans "Quit" %}
+ {% trans "Quit" %}
{% endif %}
diff --git a/group/templates/group/group_manage.html b/group/templates/group/group_manage.html
index dc65e28ec4..58f0aaa1a6 100644
--- a/group/templates/group/group_manage.html
+++ b/group/templates/group/group_manage.html
@@ -34,7 +34,7 @@
{% endblock %}
diff --git a/group/urls.py b/group/urls.py
index 911a542037..f4889a4f9f 100644
--- a/group/urls.py
+++ b/group/urls.py
@@ -5,7 +5,7 @@ from views import group_info, group_member_operations, group_add_admin, \
create_group_repo, group_joinrequest, attention, group_message_remove, \
group_remove_admin, group_discuss, group_wiki, group_wiki_create, \
group_wiki_page_new, group_wiki_page_edit, group_wiki_pages, \
- group_wiki_page_delete
+ group_wiki_page_delete, group_remove, group_dismiss, group_quit
urlpatterns = patterns('',
url(r'^(?P\d+)/$', group_info, name='group_info'),
@@ -20,6 +20,9 @@ urlpatterns = patterns('',
url(r'^reply/(?P[\d]+)/$', msg_reply, name='msg_reply'),
url(r'^reply/new/$', msg_reply_new, name='msg_reply_new'),
url(r'^(?P\d+)/manage/$', group_manage, name='group_manage'),
+ url(r'^(?P\d+)/remove/$', group_remove, name='group_remove'),
+ url(r'^(?P\d+)/dismiss/$', group_dismiss, name='group_dismiss'),
+ url(r'^(?P\d+)/quit/$', group_quit, name='group_quit'),
url(r'^(?P[\d]+)/create-repo/$', create_group_repo, name='create_group_repo'),
(r'^(?P[\d]+)/member/(?P[^/]+)/$', group_member_operations),
url(r'^(?P\d+)/msgdel/(?P\d+)/$', group_message_remove, name='group_message_remove'),
diff --git a/group/views.py b/group/views.py
index 965eff7b16..d52e6d6fc6 100644
--- a/group/views.py
+++ b/group/views.py
@@ -37,7 +37,7 @@ from forms import MessageForm, MessageReplyForm, GroupRecommendForm, \
GroupAddForm, GroupJoinMsgForm, WikiCreateForm
from signals import grpmsg_added, grpmsg_reply_added
from settings import GROUP_MEMBERS_DEFAULT_DISPLAY
-from base.decorators import ctx_switch_required
+from base.decorators import sys_staff_required
from base.mixins import LoginRequiredMixin
from seahub.contacts.models import Contact
from seahub.contacts.signals import mail_sended
@@ -123,15 +123,12 @@ def group_list(request):
}, context_instance=RequestContext(request))
@login_required
+@sys_staff_required
def group_remove(request, group_id):
"""
Remove group from groupadmin page. Only system admin can perform this
operation.
"""
- # Check whether user is system admin.
- if not request.user.is_staff:
- return render_permission_error(request, _(u'Only administrators can delete the group.'))
-
# Request header may missing HTTP_REFERER, we need to handle that case.
next = request.META.get('HTTP_REFERER', None)
if not next:
@@ -201,71 +198,6 @@ def group_quit(request, group_id):
return HttpResponseRedirect(reverse('group_list', args=[]))
-def render_group_info(request, group_id, form):
- group_id_int = int(group_id) # Checkeb by URL Conf
-
- # remove user notifications
- UserNotification.objects.filter(to_user=request.user.username,
- msg_type='group_msg',
- detail=str(group_id)).delete()
-
- group = get_group(group_id_int)
- if not group:
- return HttpResponseRedirect(reverse('group_list', args=[]))
-
- # Get all group members.
- members = get_group_members(group_id_int)
-
- # Check whether user belongs to the group.
- joined = is_group_user(group_id_int, request.user.username)
- if not joined and not request.user.is_staff:
- # Return group public info page.
- return render_to_response('group/group_pubinfo.html', {
- 'members': members,
- 'group': group,
- }, context_instance=RequestContext(request))
-
- is_staff = True if check_group_staff(group.id, request.user) else False
-
-
- org = request.user.org
- if org:
- repos = get_org_group_repos(org['org_id'], group_id_int,
- request.user.username)
- else:
- repos = get_group_repos(group_id_int, request.user.username)
-
- recent_commits = []
- cmt_repo_dict = {}
- for repo in repos:
- repo.user_perm = check_permission(repo.props.id, request.user.username)
- cmmts = get_commits(repo.props.id, 0, 10)
- for c in cmmts:
- cmt_repo_dict[c.id] = repo
- recent_commits += cmmts
-
- recent_commits.sort(lambda x, y : cmp(y.props.ctime, x.props.ctime))
- recent_commits = recent_commits[:15]
- for cmt in recent_commits:
- cmt.repo = cmt_repo_dict[cmt.id]
- cmt.repo.password_set = is_passwd_set(cmt.props.repo_id,
- request.user.username)
- cmt.tp = cmt.props.desc.split(' ')[0]
-
-
- return render_to_response("group/group_info.html", {
- "members": members,
- "repos": repos,
- "recent_commits": recent_commits,
- "group_id": group_id,
- "group" : group,
- "is_staff": is_staff,
- "is_join": joined,
- "form": form,
- 'create_shared_repo': True,
- 'group_members_default_display': GROUP_MEMBERS_DEFAULT_DISPLAY,
- }, context_instance=RequestContext(request));
-
@login_required
def group_message_remove(request, group_id, msg_id):
"""
@@ -395,40 +327,47 @@ def msg_reply_new(request):
}, context_instance=RequestContext(request))
@login_required
-@ctx_switch_required
-def group_info(request, group_id):
- if request.method == 'POST':
- form = MessageForm(request.POST)
-
- if form.is_valid():
- msg = form.cleaned_data['message']
- message = GroupMessage()
- message.group_id = group_id
- message.from_email = request.user.username
- message.message = msg
- message.save()
-
- # send signal
- grpmsg_added.send(sender=GroupMessage, group_id=group_id,
- from_email=request.user.username)
- # Always return an HttpResponseRedirect after successfully dealing
- # with POST data.
- return HttpResponseRedirect(reverse('group_info', args=[group_id]))
- else:
- form = MessageForm()
+@group_check
+def group_info(request, group):
+ # Get all group members.
+ members = get_group_members(group.id)
+ is_staff = True if check_group_staff(group.id, request.user) else False
- op = request.GET.get('op', '')
- if op == 'delete':
- return group_remove(request, group_id)
- elif op == 'dismiss':
- return group_dismiss(request, group_id)
- elif op == 'quit':
- return group_quit(request, group_id)
+ org = request.user.org
+ if org:
+ repos = get_org_group_repos(org['org_id'], group.id,
+ request.user.username)
+ else:
+ repos = get_group_repos(group.id, request.user.username)
- return render_group_info(request, group_id, form)
+ recent_commits = []
+ cmt_repo_dict = {}
+ for repo in repos:
+ repo.user_perm = check_permission(repo.props.id, request.user.username)
+ cmmts = get_commits(repo.props.id, 0, 10)
+ for c in cmmts:
+ cmt_repo_dict[c.id] = repo
+ recent_commits += cmmts
+
+ recent_commits.sort(lambda x, y : cmp(y.props.ctime, x.props.ctime))
+ recent_commits = recent_commits[:15]
+ for cmt in recent_commits:
+ cmt.repo = cmt_repo_dict[cmt.id]
+ cmt.repo.password_set = is_passwd_set(cmt.props.repo_id,
+ request.user.username)
+ cmt.tp = cmt.props.desc.split(' ')[0]
+
+ return render_to_response("group/group_info.html", {
+ "members": members,
+ "repos": repos,
+ "recent_commits": recent_commits,
+ "group" : group,
+ "is_staff": is_staff,
+ 'create_shared_repo': True,
+ 'group_members_default_display': GROUP_MEMBERS_DEFAULT_DISPLAY,
+ }, context_instance=RequestContext(request));
@login_required
-@ctx_switch_required
@group_staff_required
@group_check
def group_manage(request, group):
diff --git a/templates/sys_group_admin.html b/templates/sys_group_admin.html
index 1b54e367ba..98092f5465 100644
--- a/templates/sys_group_admin.html
+++ b/templates/sys_group_admin.html
@@ -1,5 +1,6 @@
{% extends "admin_base.html" %}
{% load seahub_tags i18n %}
+{% load url from future %}
{% block nav_groupadmin_class %}class="cur"{% endblock %}
@@ -18,7 +19,7 @@
{{ group.props.group_name }} |
{{ group.props.creator_name }} |
{{ group.props.timestamp|tsstr_sec }} |
- {% trans "Delete" %} |
+ {% trans "Delete" %} |
{% endfor %}