mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-16 15:19:06 +00:00
Remove session storage in context switch
This commit is contained in:
113
group/views.py
113
group/views.py
@@ -11,8 +11,9 @@ from django.template.loader import render_to_string
|
||||
|
||||
from auth.decorators import login_required
|
||||
from seaserv import ccnet_rpc, ccnet_threaded_rpc, seafserv_threaded_rpc, \
|
||||
get_repo, get_group_repoids, check_group_staff, get_commits, \
|
||||
get_personal_groups, get_group, get_group_members
|
||||
get_repo, get_group_repos, check_group_staff, get_commits, \
|
||||
get_personal_groups, get_group, get_group_members, create_org_repo, \
|
||||
get_org_group_repos
|
||||
from pysearpc import SearpcError
|
||||
|
||||
from models import GroupMessage, MessageReply, MessageAttachment
|
||||
@@ -25,7 +26,7 @@ from seahub.profile.models import Profile
|
||||
from seahub.settings import SITE_ROOT
|
||||
from seahub.shortcuts import get_first_object_or_none
|
||||
from seahub.utils import render_error, render_permission_error, \
|
||||
validate_group_name, string2list
|
||||
validate_group_name, string2list, check_and_get_org_by_group
|
||||
from seahub.views import is_registered_user
|
||||
from seahub.forms import RepoCreateForm
|
||||
|
||||
@@ -138,6 +139,9 @@ def render_group_info(request, group_id, form):
|
||||
except ValueError:
|
||||
return HttpResponseRedirect(reverse('group_list', args=[]))
|
||||
|
||||
# change navigator when user in diffent context
|
||||
org, base_template = check_and_get_org_by_group(group_id_int)
|
||||
|
||||
# Check whether user belong to the group or admin
|
||||
joined = False
|
||||
groups = ccnet_threaded_rpc.get_groups(request.user.username)
|
||||
@@ -145,7 +149,10 @@ def render_group_info(request, group_id, form):
|
||||
if group.id == group_id_int:
|
||||
joined = True
|
||||
if not joined and not request.user.is_staff:
|
||||
return render_error(request, u'未加入该小组')
|
||||
return render_error(request, u'未加入该小组', extra_ctx={
|
||||
'org': org,
|
||||
'base_template': base_template,
|
||||
})
|
||||
|
||||
# if request.user.org and not request.user.org.is_staff:
|
||||
# return render_error(request, u'未加入该小组')
|
||||
@@ -169,25 +176,11 @@ def render_group_info(request, group_id, form):
|
||||
else:
|
||||
common_members.append(member)
|
||||
|
||||
repos = []
|
||||
repo_ids = get_group_repoids(group_id=group_id_int)
|
||||
for repo_id in repo_ids:
|
||||
if not repo_id:
|
||||
continue
|
||||
repo = get_repo(repo_id)
|
||||
if not repo:
|
||||
continue
|
||||
|
||||
repo.share_from = seafserv_threaded_rpc.get_group_repo_share_from(repo_id)
|
||||
repo.share_from_me = True if request.user.username == repo.share_from else False
|
||||
|
||||
try:
|
||||
repo.latest_modify = get_commits(repo.id, 0, 1)[0].ctime
|
||||
except:
|
||||
repo.latest_modify = None
|
||||
|
||||
repos.append(repo)
|
||||
repos.sort(lambda x, y: cmp(y.latest_modify, x.latest_modify))
|
||||
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)
|
||||
|
||||
# remove user notifications
|
||||
UserNotification.objects.filter(to_user=request.user.username,
|
||||
@@ -259,6 +252,8 @@ def render_group_info(request, group_id, form):
|
||||
'per_page': per_page,
|
||||
'page_next': page_next,
|
||||
'url': reverse('create_group_repo', args=[group_id]),
|
||||
'org': org,
|
||||
'base_template': base_template,
|
||||
}, context_instance=RequestContext(request));
|
||||
|
||||
@login_required
|
||||
@@ -447,11 +442,16 @@ def group_members(request, group_id):
|
||||
|
||||
members = ccnet_threaded_rpc.get_group_members(group_id_int)
|
||||
contacts = Contact.objects.filter(user_email=request.user.username)
|
||||
|
||||
# change navigator when user in diffent context
|
||||
org, base_template = check_and_get_org_by_group(group_id_int)
|
||||
|
||||
return render_to_response('group/group_manage.html', {
|
||||
'group' : group,
|
||||
'members': members,
|
||||
'contacts': contacts,
|
||||
'org': org,
|
||||
'base_template': base_template,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
@login_required
|
||||
@@ -598,7 +598,7 @@ def group_recommend(request):
|
||||
else:
|
||||
# TODO: need more clear error message
|
||||
messages.add_message(request, messages.ERROR, '推荐失败')
|
||||
return HttpResponseRedirect(next)
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
@login_required
|
||||
def create_group_repo(request, group_id):
|
||||
@@ -612,7 +612,7 @@ def create_group_repo(request, group_id):
|
||||
content_type=content_type)
|
||||
group_id = int(group_id)
|
||||
if not get_group(group_id):
|
||||
return json_error(u'共享失败:小组不存在')
|
||||
return json_error(u'创建失败:小组不存在')
|
||||
|
||||
# Check whether user belong to the group
|
||||
groups = ccnet_threaded_rpc.get_groups(request.user.username)
|
||||
@@ -620,7 +620,7 @@ def create_group_repo(request, group_id):
|
||||
if group.props.id == group_id:
|
||||
break
|
||||
else:
|
||||
return json_error(u"共享失败:未加入该小组")
|
||||
return json_error(u"创建失败:未加入该小组")
|
||||
|
||||
form = RepoCreateForm(request.POST)
|
||||
if not form.is_valid():
|
||||
@@ -631,25 +631,56 @@ def create_group_repo(request, group_id):
|
||||
encrypted = form.cleaned_data['encryption']
|
||||
passwd = form.cleaned_data['passwd']
|
||||
user = request.user.username
|
||||
try:
|
||||
repo_id = seafserv_threaded_rpc.create_repo(repo_name, repo_desc,
|
||||
user, passwd)
|
||||
except:
|
||||
repo_id = None
|
||||
if not repo_id:
|
||||
return json_error(u"创建目录失败")
|
||||
|
||||
try:
|
||||
status = seafserv_threaded_rpc.group_share_repo(repo_id, group_id, user, 'rw')
|
||||
except SearpcError, e:
|
||||
org, base_template = check_and_get_org_by_group(group_id)
|
||||
if org:
|
||||
# create group repo in org context
|
||||
try:
|
||||
repo_id = create_org_repo(repo_name, repo_desc, user, passwd,
|
||||
org.org_id)
|
||||
except:
|
||||
repo_id = None
|
||||
if not repo_id:
|
||||
return json_error(u"创建目录失败")
|
||||
|
||||
try:
|
||||
status = seafserv_threaded_rpc.add_org_group_repo(repo_id,
|
||||
org.org_id,
|
||||
group_id,
|
||||
user, 'rw')
|
||||
except SearpcError, e:
|
||||
status = -1
|
||||
|
||||
# if share failed, remove the newly created repo
|
||||
seafserv_threaded_rpc.remove_repo(repo_id)
|
||||
|
||||
return json_error(u'共享失败:内部错误')
|
||||
else:
|
||||
if status != 0:
|
||||
seafserv_threaded_rpc.remove_repo(repo_id)
|
||||
return json_error(u'共享失败:内部错误')
|
||||
return json_error(u'创建目录失败:内部错误')
|
||||
else:
|
||||
result = {'success': True}
|
||||
return HttpResponse(json.dumps(result),
|
||||
content_type=content_type)
|
||||
else:
|
||||
# create group repo in user context
|
||||
try:
|
||||
repo_id = seafserv_threaded_rpc.create_repo(repo_name,
|
||||
repo_desc,
|
||||
user, passwd)
|
||||
except:
|
||||
repo_id = None
|
||||
if not repo_id:
|
||||
return json_error(u"创建目录失败")
|
||||
|
||||
try:
|
||||
status = seafserv_threaded_rpc.group_share_repo(repo_id,
|
||||
group_id,
|
||||
user, 'rw')
|
||||
except SearpcError, e:
|
||||
status = -1
|
||||
|
||||
# if share failed, remove the newly created repo
|
||||
if status != 0:
|
||||
seafserv_threaded_rpc.remove_repo(repo_id)
|
||||
return json_error(u'创建目录失败:内部错误')
|
||||
else:
|
||||
result = {'success': True}
|
||||
return HttpResponse(json.dumps(result),
|
||||
|
Reference in New Issue
Block a user