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