Revision 9c6ddb46 snf-pithos-backend/pithos/backends/modular.py
b/snf-pithos-backend/pithos/backends/modular.py | ||
---|---|---|
723 | 723 |
size_range, all_props, public): |
724 | 724 |
if user != account and until: |
725 | 725 |
raise NotAllowedError |
726 |
|
|
727 |
objects = [] |
|
726 | 728 |
if shared and public: |
727 | 729 |
# get shared first |
728 | 730 |
shared_paths = self._list_object_permissions( |
729 | 731 |
user, account, container, prefix, shared=True, public=False) |
730 |
objects = set() |
|
731 | 732 |
if shared_paths: |
732 | 733 |
path, node = self._lookup_container(account, container) |
733 | 734 |
shared_paths = self._get_formatted_paths(shared_paths) |
734 |
objects |= set(self._list_object_properties(
|
|
735 |
objects = set(self._list_object_properties( |
|
735 | 736 |
node, path, prefix, delimiter, marker, limit, virtual, |
736 | 737 |
domain, keys, until, size_range, shared_paths, all_props)) |
737 | 738 |
|
... | ... | |
741 | 742 |
objects = list(objects) |
742 | 743 |
|
743 | 744 |
objects.sort(key=lambda x: x[0]) |
744 |
start, limit = self._list_limits( |
|
745 |
[x[0] for x in objects], marker, limit) |
|
746 |
return objects[start:start + limit] |
|
747 | 745 |
elif public: |
748 | 746 |
objects = self._list_public_object_properties( |
749 | 747 |
user, account, container, prefix, all_props) |
750 |
start, limit = self._list_limits( |
|
751 |
[x[0] for x in objects], marker, limit) |
|
752 |
return objects[start:start + limit] |
|
748 |
else: |
|
749 |
allowed = self._list_object_permissions( |
|
750 |
user, account, container, prefix, shared, public=False) |
|
751 |
if shared and not allowed: |
|
752 |
return [] |
|
753 |
path, node = self._lookup_container(account, container) |
|
754 |
allowed = self._get_formatted_paths(allowed) |
|
755 |
objects = self._list_object_properties( |
|
756 |
node, path, prefix, delimiter, marker, limit, virtual, domain, |
|
757 |
keys, until, size_range, allowed, all_props) |
|
753 | 758 |
|
754 |
allowed = self._list_object_permissions( |
|
755 |
user, account, container, prefix, shared, public) |
|
756 |
if shared and not allowed: |
|
757 |
return [] |
|
758 |
path, node = self._lookup_container(account, container) |
|
759 |
allowed = self._get_formatted_paths(allowed) |
|
760 |
objects = self._list_object_properties( |
|
761 |
node, path, prefix, delimiter, marker, limit, virtual, domain, |
|
762 |
keys, until, size_range, allowed, all_props) |
|
763 |
start, limit = self._list_limits( |
|
764 |
[x[0] for x in objects], marker, limit) |
|
759 |
# apply limits |
|
760 |
start, limit = self._list_limits(objects, marker, limit) |
|
765 | 761 |
return objects[start:start + limit] |
766 | 762 |
|
767 | 763 |
def _list_public_object_properties(self, user, account, container, prefix, |
Also available in: Unified diff