mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-17 15:53:28 +00:00
Modify group
This commit is contained in:
@@ -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>
|
||||
|
@@ -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)
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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" />
|
||||
|
10
views.py
10
views.py
@@ -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,
|
||||
|
Reference in New Issue
Block a user