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:
@@ -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>
|
||||
|
@@ -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 %}
|
||||
|
@@ -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'),
|
||||
|
135
group/views.py
135
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)
|
||||
@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):
|
||||
|
@@ -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>
|
||||
|
Reference in New Issue
Block a user