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

Clean group info

This commit is contained in:
zhengxie
2013-03-28 20:48:22 +08:00
parent 94d8736112
commit 50717e6704
5 changed files with 47 additions and 104 deletions

View File

@@ -31,7 +31,7 @@
<div class="fleft">{% grp_avatar group.props.id 48 %}</div>
<p class="txt fright">{{ group.creator_name|email2nickname }} {% trans "created at" %}<br />{{ group.timestamp|tsstr_day }}</p>
{% if not is_staff %}
<p class="txt fright"><a id="quit-group" href="#" data-url="{{ SITE_ROOT }}group/{{ group.id }}/?op=quit">{% trans "Quit" %}</a></p>
<p class="txt fright"><a id="quit-group" href="#" data-url="{% url 'group_quit' group.id %}">{% trans "Quit" %}</a></p>
{% endif %}
</div>
</div>

View File

@@ -34,7 +34,7 @@
<div class="info-item">
<h3 class="info-item-top">{% trans "Operations"%}</h3>
<ul class="info-item-bottom op-list">
<li><a id="group-dismiss" href="#" data-url="{{ SITE_ROOT }}group/{{ group.id }}/?op=dismiss">{% trans "Dismiss"%}</a></li>
<li><a id="group-dismiss" href="#" data-url="{% url 'group_dismiss' group.id %}">{% trans "Dismiss"%}</a></li>
</ul>
</div>
{% endblock %}

View File

@@ -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<group_id>\d+)/$', group_info, name='group_info'),
@@ -20,6 +20,9 @@ urlpatterns = patterns('',
url(r'^reply/(?P<msg_id>[\d]+)/$', msg_reply, name='msg_reply'),
url(r'^reply/new/$', msg_reply_new, name='msg_reply_new'),
url(r'^(?P<group_id>\d+)/manage/$', group_manage, name='group_manage'),
url(r'^(?P<group_id>\d+)/remove/$', group_remove, name='group_remove'),
url(r'^(?P<group_id>\d+)/dismiss/$', group_dismiss, name='group_dismiss'),
url(r'^(?P<group_id>\d+)/quit/$', group_quit, name='group_quit'),
url(r'^(?P<group_id>[\d]+)/create-repo/$', create_group_repo, name='create_group_repo'),
(r'^(?P<group_id>[\d]+)/member/(?P<user_name>[^/]+)/$', group_member_operations),
url(r'^(?P<group_id>\d+)/msgdel/(?P<msg_id>\d+)/$', group_message_remove, name='group_message_remove'),

View File

@@ -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)
@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
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]))
org = request.user.org
if org:
repos = get_org_group_repos(org['org_id'], group.id,
request.user.username)
else:
form = MessageForm()
repos = get_group_repos(group.id, request.user.username)
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)
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
return render_group_info(request, group_id, form)
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):

View File

@@ -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 @@
<td><a href="{{ SITE_ROOT }}group/{{ group.props.id }}/">{{ group.props.group_name }}</a></td>
<td>{{ group.props.creator_name }}</td>
<td>{{ group.props.timestamp|tsstr_sec }}</td>
<td><a href="#" data-url="{{ SITE_ROOT}}group/{{ group.id }}/?op=delete&src=sysgroupadmin" data-target="{{ group.props.group_name }}" class="group-remove-btn op">{% trans "Delete" %}</a></td>
<td><a href="#" data-url="{% url 'group_remove' group.id %}" data-target="{{ group.props.group_name }}" class="group-remove-btn op">{% trans "Delete" %}</a></td>
</tr>
{% endfor %}
</table>