Revision e0f916bb pithos/api/functions.py

b/pithos/api/functions.py
45 45
    LengthRequired, PreconditionFailed, RangeNotSatisfiable, UnprocessableEntity)
46 46
from pithos.api.util import (format_header_key, printable_header_dict, get_account_headers,
47 47
    put_account_headers, get_container_headers, put_container_headers, get_object_headers, put_object_headers,
48
    update_manifest_meta, update_sharing_meta, validate_modification_preconditions,
48
    update_manifest_meta, update_sharing_meta, update_public_meta, validate_modification_preconditions,
49 49
    validate_matching_preconditions, split_container_object_string, copy_or_move_object,
50 50
    get_int_parameter, get_content_length, get_content_range, raw_input_socket,
51 51
    socket_read_iterator, object_data_response, put_object_block, hashmap_hash, api_method)
......
412 412
                meta = backend.get_object_meta(request.user, v_account, v_container, x[0], x[1])
413 413
                if until is None:
414 414
                    permissions = backend.get_object_permissions(request.user, v_account, v_container, x[0])
415
                    public = backend.get_object_public(request.user, v_account, v_container, x[0])
415 416
                else:
416 417
                    permissions = None
418
                    public = None
417 419
            except NotAllowedError:
418 420
                raise Unauthorized('Access denied')
419 421
            except NameError:
420 422
                pass
421 423
            update_sharing_meta(permissions, v_account, v_container, x[0], meta)
424
            update_public_meta(public, meta)
422 425
            object_meta.append(printable_header_dict(meta))
423 426
    if request.serialization == 'xml':
424 427
        data = render_to_string('objects.xml', {'container': v_container, 'objects': object_meta})
......
441 444
        meta = backend.get_object_meta(request.user, v_account, v_container, v_object, version)
442 445
        if version is None:
443 446
            permissions = backend.get_object_permissions(request.user, v_account, v_container, v_object)
447
            public = backend.get_object_public(request.user, v_account, v_container, v_object)
444 448
        else:
445 449
            permissions = None
450
            public = None
446 451
    except NotAllowedError:
447 452
        raise Unauthorized('Access denied')
448 453
    except NameError:
......
452 457
    
453 458
    update_manifest_meta(request, v_account, meta)
454 459
    update_sharing_meta(permissions, v_account, v_container, v_object, meta)
460
    update_public_meta(public, meta)
455 461
    
456 462
    response = HttpResponse(status=200)
457 463
    put_object_headers(response, meta)
......
494 500
        meta = backend.get_object_meta(request.user, v_account, v_container, v_object, version)
495 501
        if version is None:
496 502
            permissions = backend.get_object_permissions(request.user, v_account, v_container, v_object)
503
            public = backend.update_object_public(request.user, v_account, v_container, v_object)
497 504
        else:
498 505
            permissions = None
506
            public = None
499 507
    except NotAllowedError:
500 508
        raise Unauthorized('Access denied')
501 509
    except NameError:
......
505 513
    
506 514
    update_manifest_meta(request, v_account, meta)
507 515
    update_sharing_meta(permissions, v_account, v_container, v_object, meta)
516
    update_public_meta(public, meta)
508 517
    
509 518
    # Evaluate conditions.
510 519
    validate_modification_preconditions(request, meta)
......
656 665
        raise BadRequest('Invalid sharing header')
657 666
    except AttributeError:
658 667
        raise Conflict('Sharing already set above or below this path in the hierarchy')
668
    if public is not None:
669
        try:
670
            backend.update_object_public(request.user, v_account, v_container, v_object, public)
671
        except NotAllowedError:
672
            raise Unauthorized('Access denied')
673
        except NameError:
674
            raise ItemNotFound('Object does not exist')
659 675
    
660 676
    response = HttpResponse(content=payload, status=code)
661 677
    response['ETag'] = meta['hash']
......
740 756
                raise BadRequest('Invalid sharing header')
741 757
            except AttributeError:
742 758
                raise Conflict('Sharing already set above or below this path in the hierarchy')
759
        if public is not None:
760
            try:
761
                backend.update_object_public(request.user, v_account, v_container, v_object, public)
762
            except NotAllowedError:
763
                raise Unauthorized('Access denied')
764
            except NameError:
765
                raise ItemNotFound('Object does not exist')
743 766
        try:
744 767
            backend.update_object_meta(request.user, v_account, v_container, v_object, meta, replace)
745 768
        except NotAllowedError:
......
806 829
        raise BadRequest('Invalid sharing header')
807 830
    except AttributeError:
808 831
        raise Conflict('Sharing already set above or below this path in the hierarchy')
832
    if public is not None:
833
        try:
834
            backend.update_object_public(request.user, v_account, v_container, v_object, public)
835
        except NotAllowedError:
836
            raise Unauthorized('Access denied')
837
        except NameError:
838
            raise ItemNotFound('Object does not exist')
809 839
    
810 840
    response = HttpResponse(status=204)
811 841
    response['ETag'] = meta['hash']

Also available in: Unified diff