Revision 15a96c3e pithos/api/functions.py
b/pithos/api/functions.py | ||
---|---|---|
537 | 537 |
objects = request.backend.list_object_meta(request.user_uniq, v_account, |
538 | 538 |
v_container, prefix, delimiter, marker, |
539 | 539 |
limit, virtual, 'pithos', keys, shared, until) |
540 |
object_permissions = {} |
|
541 |
object_public = {} |
|
542 |
if until is None: |
|
543 |
name_idx = len('/'.join((v_account, v_container, ''))) |
|
544 |
for x in request.backend.list_object_permissions(request.user_uniq, |
|
545 |
v_account, v_container, prefix): |
|
546 |
object = x[name_idx:] |
|
547 |
object_permissions[object] = request.backend.get_object_permissions( |
|
548 |
request.user_uniq, v_account, v_container, object) |
|
549 |
for k, v in request.backend.list_object_public(request.user_uniq, |
|
550 |
v_account, v_container, prefix).iteritems(): |
|
551 |
object_public[k[name_idx:]] = v |
|
540 | 552 |
except NotAllowedError: |
541 | 553 |
raise Forbidden('Not allowed') |
542 | 554 |
except NameError: |
543 | 555 |
raise ItemNotFound('Container does not exist') |
544 | 556 |
|
545 |
# object_meta = [] |
|
546 |
# for x in objects: |
|
547 |
# if x[1] is None: |
|
548 |
# # Virtual objects/directories. |
|
549 |
# object_meta.append({'subdir': x[0]}) |
|
550 |
# else: |
|
551 |
# try: |
|
552 |
# meta = request.backend.get_object_meta(request.user_uniq, v_account, |
|
553 |
# v_container, x[0], 'pithos', x[1]) |
|
554 |
# if until is None: |
|
555 |
# permissions = request.backend.get_object_permissions( |
|
556 |
# request.user_uniq, v_account, v_container, x[0]) |
|
557 |
# public = request.backend.get_object_public(request.user_uniq, |
|
558 |
# v_account, v_container, x[0]) |
|
559 |
# else: |
|
560 |
# permissions = None |
|
561 |
# public = None |
|
562 |
# except NotAllowedError: |
|
563 |
# raise Forbidden('Not allowed') |
|
564 |
# except NameError: |
|
565 |
# pass |
|
566 |
# else: |
|
567 |
# rename_meta_key(meta, 'hash', 'x_object_hash') # Will be replaced by checksum. |
|
568 |
# rename_meta_key(meta, 'checksum', 'hash') |
|
569 |
# rename_meta_key(meta, 'type', 'content_type') |
|
570 |
# rename_meta_key(meta, 'uuid', 'x_object_uuid') |
|
571 |
# rename_meta_key(meta, 'modified', 'last_modified') |
|
572 |
# rename_meta_key(meta, 'modified_by', 'x_object_modified_by') |
|
573 |
# rename_meta_key(meta, 'version', 'x_object_version') |
|
574 |
# rename_meta_key(meta, 'version_timestamp', 'x_object_version_timestamp') |
|
575 |
# m = dict([(k[14:], v) for k, v in meta.iteritems() if k.startswith('X-Object-Meta-')]) |
|
576 |
# for k in m: |
|
577 |
# del(meta['X-Object-Meta-' + k]) |
|
578 |
# if m: |
|
579 |
# meta['X-Object-Meta'] = printable_header_dict(m) |
|
580 |
# update_sharing_meta(request, permissions, v_account, v_container, x[0], meta) |
|
581 |
# update_public_meta(public, meta) |
|
582 |
# object_meta.append(printable_header_dict(meta)) |
|
583 |
# if request.serialization == 'xml': |
|
584 |
# data = render_to_string('objects.xml', {'container': v_container, 'objects': object_meta}) |
|
585 |
# elif request.serialization == 'json': |
|
586 |
# data = json.dumps(object_meta, default=json_encode_decimal) |
|
587 |
# response.status_code = 200 |
|
588 |
# response.content = data |
|
589 |
# return response |
|
590 |
|
|
591 | 557 |
object_meta = [] |
592 | 558 |
for meta in objects: |
593 | 559 |
if len(meta) == 1: |
... | ... | |
605 | 571 |
rename_meta_key(meta, 'modified_by', 'x_object_modified_by') |
606 | 572 |
rename_meta_key(meta, 'version', 'x_object_version') |
607 | 573 |
rename_meta_key(meta, 'version_timestamp', 'x_object_version_timestamp') |
574 |
permissions = object_permissions.get(meta['name'], None) |
|
575 |
if permissions: |
|
576 |
update_sharing_meta(request, permissions, v_account, v_container, meta['name'], meta) |
|
577 |
public = object_public.get(meta['name'], None) |
|
578 |
if public: |
|
579 |
update_public_meta(public, meta) |
|
608 | 580 |
object_meta.append(printable_header_dict(meta)) |
609 | 581 |
if request.serialization == 'xml': |
610 | 582 |
data = render_to_string('objects.xml', {'container': v_container, 'objects': object_meta}) |
Also available in: Unified diff