Revision 77edd23d pithos/api/functions.py

b/pithos/api/functions.py
214 214
            raise Unauthorized('Access denied')
215 215
        except ValueError:
216 216
            raise BadRequest('Invalid groups header')
217
    try:
218
        backend.update_account_meta(request.user, v_account, meta, replace)
219
    except NotAllowedError:
220
        raise Unauthorized('Access denied')
217
    if meta or replace:
218
        try:
219
            backend.update_account_meta(request.user, v_account, meta, replace)
220
        except NotAllowedError:
221
            raise Unauthorized('Access denied')
221 222
    return HttpResponse(status=202)
222 223

  
223 224
@api_method('GET', format_allowed=True)
......
363 364
            raise ItemNotFound('Container does not exist')
364 365
        except ValueError:
365 366
            raise BadRequest('Invalid policy header')
366
    try:
367
        backend.update_container_meta(request.user, v_account, v_container, meta, replace)
368
    except NotAllowedError:
369
        raise Unauthorized('Access denied')
370
    except NameError:
371
        raise ItemNotFound('Container does not exist')
367
    if meta or replace:
368
        try:
369
            backend.update_container_meta(request.user, v_account, v_container, meta, replace)
370
        except NotAllowedError:
371
            raise Unauthorized('Access denied')
372
        except NameError:
373
            raise ItemNotFound('Container does not exist')
372 374
    return HttpResponse(status=202)
373 375

  
374 376
@api_method('DELETE')
......
913 915
    # A Content-Type or X-Source-Object header indicates data updates.
914 916
    src_object = request.META.get('HTTP_X_SOURCE_OBJECT')
915 917
    if (not content_type or content_type != 'application/octet-stream') and not src_object:
918
        response = HttpResponse(status=202)
919
        
916 920
        # Do permissions first, as it may fail easier.
917 921
        if permissions is not None:
918 922
            try:
......
932 936
                raise Unauthorized('Access denied')
933 937
            except NameError:
934 938
                raise ItemNotFound('Object does not exist')
935
        try:
936
            version_id = backend.update_object_meta(request.user, v_account, v_container, v_object, meta, replace)
937
        except NotAllowedError:
938
            raise Unauthorized('Access denied')
939
        except NameError:
940
            raise ItemNotFound('Object does not exist')
939
        if meta or replace:
940
            try:
941
                version_id = backend.update_object_meta(request.user, v_account, v_container, v_object, meta, replace)
942
            except NotAllowedError:
943
                raise Unauthorized('Access denied')
944
            except NameError:
945
                raise ItemNotFound('Object does not exist')        
946
            response['X-Object-Version'] = version_id
941 947
        
942
        response = HttpResponse(status=202)
943
        response['X-Object-Version'] = version_id
944 948
        return response
945 949
    
946 950
    # Single range update. Range must be in Content-Range.

Also available in: Unified diff