def group_add(request, gid): group_id_int = int(gid) # Checked by URL Conf if not check_group_staff(group_id_int, request.user): raise Http404 group = ccnet_threaded_rpc.get_group(group_id_int) if not group: 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, request.user.username) form = GroupAvatarForm(request.POST or None, request.FILES or None) if request.method == 'POST' and 'avatar' in request.FILES: if form.is_valid(): image_file = request.FILES['avatar'] avatar = GroupAvatar() avatar.group_id = gid avatar.avatar.save(image_file.name, image_file) avatar.save() # invalidate group avatar cache invalidate_group_cache(gid) messages.success(request, _("Successfully uploaded a new group avatar.")) else: messages.error(request, form.errors['avatar']) return HttpResponseRedirect(_get_next(request)) else: # Only allow post request to change group avatar. raise Http404
def _decorated(request, *args, **kwargs): if not request.cloud_mode: # no need to switch context when `CLOUD_MODE` is false request.user.org = None request.base_template = 'myhome_base.html' return func(request, *args, **kwargs) repo_id = kwargs.get('repo_id', '') group_id = kwargs.get('group_id', '') if repo_id and group_id: return func(request, *args, **kwargs) if not repo_id and not group_id: return func(request, *args, **kwargs) user = request.user.username if repo_id: org, base_template = check_and_get_org_by_repo(repo_id, user) if group_id: org, base_template = check_and_get_org_by_group(int(group_id), user) if org: request.user.org = org._dict else: request.user.org = None request.base_template = base_template return func(request, *args, **kwargs)
def group_add(request, gid): group_id_int = int(gid) # Checked by URL Conf if not check_group_staff(group_id_int, request.user.username): raise Http404 group = ccnet_threaded_rpc.get_group(group_id_int) if not group: 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, request.user.username) form = GroupAvatarForm(request.POST or None, request.FILES or None) if request.method == 'POST' and 'avatar' in request.FILES: if form.is_valid(): image_file = request.FILES['avatar'] avatar = GroupAvatar() avatar.group_id = gid avatar.avatar.save(image_file.name, image_file) avatar.save() # invalidate group avatar cache invalidate_group_cache(gid) messages.success(request, _("Successfully uploaded a new group avatar.")) else: messages.error(request, form.errors['avatar']) return HttpResponseRedirect(_get_next(request)) else: # Only allow post request to change group avatar. raise Http404
def create_group_repo(request, group_id): """Create a repo and share it to current group""" content_type = 'application/json; charset=utf-8' def json_error(err_msg): result = {'error': [err_msg]} return HttpResponseBadRequest(json.dumps(result), content_type=content_type) group_id = int(group_id) if not get_group(group_id): return json_error(_(u'Failed to create: the group does not exist.')) # Check whether user belongs to the group. if not is_group_user(group_id, request.user.username): return json_error(_(u'Failed to create: you are not in the group.')) form = SharedRepoCreateForm(request.POST) if not form.is_valid(): return json_error(form.errors) else: repo_name = form.cleaned_data['repo_name'] repo_desc = form.cleaned_data['repo_desc'] permission = form.cleaned_data['permission'] encrypted = form.cleaned_data['encryption'] passwd = form.cleaned_data['passwd'] user = request.user.username org, base_template = check_and_get_org_by_group(group_id, user) 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'Failed to create')) try: status = seafserv_threaded_rpc.add_org_group_repo(repo_id, org.org_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) else: