def group_wiki_create(request, group): if request.method != 'POST': raise Http404 content_type = 'application/json; charset=utf-8' def json_error(err_msg, status=400): result = {'error': err_msg} return HttpResponse(json.dumps(result), status=status, content_type=content_type) form = WikiCreateForm(request.POST) if not form.is_valid(): return json_error(str(form.errors.values()[0])) # create group repo in user context repo_name = form.cleaned_data['repo_name'] repo_desc = form.cleaned_data['repo_desc'] user = request.user.username passwd = None permission = "rw" repo_id = create_repo(repo_name, repo_desc, user, passwd) if not repo_id: return json_error(_(u'Failed to create'), 500) try: status = seafserv_threaded_rpc.group_share_repo(repo_id, group.id, user, permission) except SearpcError, e: remove_repo(repo_id) return json_error(_(u'Failed to create: internal error.'), 500)
def group_share_repo(request, repo_id, group_id, from_email, permission): """ Share a repo to a group. """ # Check whether group exists group = get_group(group_id) if not group: return render_error(request, _(u"Failed to share: the group doesn't exist.")) if seafserv_threaded_rpc.group_share_repo(repo_id, group_id, from_email, permission) != 0: return render_error(request, _(u"Failed to share: internal error."))
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'Failed to create')) try: status = seafserv_threaded_rpc.group_share_repo(repo_id, group_id, user, permission) 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'Failed to create: internal error.')) else: result = {'success': True} return HttpResponse(json.dumps(result), content_type=content_type) @login_required def group_joinrequest(request, group_id):