1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-17 15:53:28 +00:00

Modify group

This commit is contained in:
xiez
2012-08-03 11:32:11 +08:00
parent 1646e9a2c0
commit bde88e09b6
5 changed files with 72 additions and 20 deletions

View File

@@ -11,7 +11,7 @@
<h3>操作</h3>
<ul class="with-bg">
<li><a href="{{ SITE_ROOT }}avatar/group/add/?gid={{ group.id }}">设置小组图标</a></li>
<li><a id="group-remove" href="#" data="{{ SITE_ROOT }}group/{{ group.id }}/?op=delete">解散小组</a></li>
<li><a id="group-remove" href="#" data="{{ SITE_ROOT }}group/{{ group.id }}/?op=dismiss">解散小组</a></li>
<li><a href="{{ SITE_ROOT }}group/{{ group.id }}/">返回小组</a></li>
</ul>
</div>

View File

@@ -18,6 +18,7 @@ from seahub.contacts.models import Contact
from seahub.contacts.signals import mail_sended
from seahub.notifications.models import UserNotification
from seahub.profile.models import Profile
from seahub.settings import SITE_ROOT
from seahub.utils import render_error, render_permission_error, \
validate_group_name, emails2list
from seahub.views import validate_emailuser
@@ -48,35 +49,76 @@ def group_list(request):
@login_required
def group_remove(request, group_id):
"""
Remove group from groupadmin page. Only sys admin or org admin can perform
this operation.
"""
# Request header may missing HTTP_REFERER, we need to handle that case.
next = request.META.get('HTTP_REFERER', None)
if not next:
next = SITE_ROOT
try:
group_id_int = int(group_id)
except ValueError:
return HttpResponseRedirect(reverse('group_list', args=[]))
return HttpResponseRedirect(next)
# Check whether user is the group staff or admin
if not ccnet_threaded_rpc.check_group_staff(group_id_int, request.user.username) \
and not request.user.is_staff:
return render_permission_error(request, u'只有小组管理员有权解散小组')
# Check whether user is sys_admin or org_admin
is_sys_staff = request.user.is_staff
if request.user.org and request.user.org['is_staff']:
is_org_staff = True
else:
is_org_staff = False
if not is_sys_staff and not is_org_staff:
return render_permission_error(request, u'只有管理员有权删除小组')
try:
ccnet_threaded_rpc.remove_group(group_id_int, request.user.username)
seafserv_threaded_rpc.remove_repo_group(group_id_int, None)
if request.user.org:
org_id = request.user.org['org_id']
ccnet_threaded_rpc.remove_org_group(org_id, group_id_int)
except SearpcError, e:
return render_error(request, e.msg)
return HttpResponseRedirect(next)
@login_required
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)
# Check whether user is group staff
user = request.user.username
if not ccnet_threaded_rpc.check_group_staff(group_id_int, user):
return render_permission_error(request, u'只有小组管理员有权解散小组')
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]))
except SearpcError, e:
return render_error(request, e.msg)
if request.GET.get('src', '') == 'orggroupadmin':
return HttpResponseRedirect(reverse('org_group_admin'))
elif request.GET.get('src', '') == 'sysgroupadmin':
return HttpResponseRedirect(reverse('sys_group_admin'))
else:
return HttpResponseRedirect(reverse('group_list', args=[]))
return HttpResponseRedirect(reverse('group_list'))
@login_required
def group_quit(request, group_id):
@@ -314,6 +356,8 @@ def group_info(request, group_id):
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)
@@ -346,7 +390,7 @@ def group_members(request, group_id):
# Add email to contacts
mail_sended.send(sender=None, user=request.user.username,
email=member_name)
if not ccnet_threaded_rpc.org_user_exists(request.user.org.org_id,
if not ccnet_threaded_rpc.org_user_exists(request.user.org['org_id'],
member_name):
err_msg = u'当前企业不存在 %s 用户' % member_name
return render_error(request, err_msg)

View File

@@ -335,6 +335,12 @@ p {
width:3em;
margin:8px 0 0;
}
.narrow-panel .note {
color: #666666;
font-size: 11px;
margin: 2px 0 5px;
}
.login-form a {
font-size:12px;
vertical-align:middle;
@@ -859,3 +865,4 @@ p {
.view-link-alert p {
display: inline-block;
}

View File

@@ -7,6 +7,7 @@
{{ form.org_name}}
<lable for="id_url_prefix">个性域名:</label>
{{ form.url_prefix }}
<p class="note">域名前缀只能包含字母或数字</p>
<p class="error hide"></p>
{{ form.url_prefix.errors }}
<input type="submit" value="提交" class="submit" />

View File

@@ -159,10 +159,10 @@ def render_repo(request, repo_id, error=''):
return render_permission_error(request, '无法访问该同步目录')
# Check whether use is repo owner
if validate_owner(request, repo_id):
is_owner = True
else:
is_owner = False
# if validate_owner(request, repo_id):
# is_owner = True
# else:
# is_owner = False
repo = get_repo(repo_id)
if not repo:
@@ -238,7 +238,7 @@ def render_repo(request, repo_id, error=''):
"can_access": can_access,
"current_commit": current_commit,
"view_history": view_history,
"is_owner": is_owner,
# "is_owner": is_owner,
"password_set": password_set,
"repo_size": repo_size,
"dir_list": dir_list,