X-Git-Url: https://code.grnet.gr/git/pithos/blobdiff_plain/cf4a7a7bb256a880cbbfe992b0cfd2fc881435a0..2c10110f2078b2cfaf04964759faccd15803ba4b:/snf-pithos-backend/pithos/backends/modular.py diff --git a/snf-pithos-backend/pithos/backends/modular.py b/snf-pithos-backend/pithos/backends/modular.py index 63ae92d..d1e3126 100644 --- a/snf-pithos-backend/pithos/backends/modular.py +++ b/snf-pithos-backend/pithos/backends/modular.py @@ -324,13 +324,12 @@ class ModularBackend(BaseBackend): start, limit = self._list_limits(allowed, marker, limit) return allowed[start:start + limit] if shared or public: - allowed = [] + allowed = set() if shared: - allowed.extend([x.split('/', 2)[1] for x in self.permissions.access_list_shared(account)]) + allowed.update([x.split('/', 2)[1] for x in self.permissions.access_list_shared(account)]) if public: - allowed.extend([x[0].split('/', 2)[1] for x in self.permissions.public_list(account)]) - allowed = list(set(allowed)) - allowed.sort() + allowed.update([x[0].split('/', 2)[1] for x in self.permissions.public_list(account)]) + allowed = sorted(allowed) start, limit = self._list_limits(allowed, marker, limit) return allowed[start:start + limit] node = self.node.node_lookup(account) @@ -529,13 +528,12 @@ class ModularBackend(BaseBackend): if not allowed: raise NotAllowedError else: - allowed = [] + allowed = set() if shared: - allowed.extend(self.permissions.access_list_shared(path)) + allowed.update(self.permissions.access_list_shared(path)) if public: - allowed.extend([x[0] for x in self.permissions.public_list(path)]) - allowed = list(set(allowed)) - allowed.sort() + allowed.update([x[0] for x in self.permissions.public_list(path)]) + allowed = sorted(allowed) if not allowed: return [] return allowed @@ -780,7 +778,7 @@ class ModularBackend(BaseBackend): size = props[self.SIZE] is_copy = not is_move and (src_account, src_container, src_name) != (dest_account, dest_container, dest_name) # New uuid. dest_version_ids.append(self._update_object_hash(user, dest_account, dest_container, dest_name, size, type, hash, None, dest_domain, dest_meta, replace_meta, permissions, src_node=node, src_version_id=src_version_id, is_copy=is_copy)) - if is_move: + if is_move and (src_account, src_container, src_name) != (dest_account, dest_container, dest_name): self._delete_object(user, src_account, src_container, src_name) if delimiter: @@ -798,7 +796,7 @@ class ModularBackend(BaseBackend): dest_prefix = dest_name + delimiter if not dest_name.endswith(delimiter) else dest_name vdest_name = path.replace(prefix, dest_prefix, 1) dest_version_ids.append(self._update_object_hash(user, dest_account, dest_container, vdest_name, size, vtype, hash, None, dest_domain, dest_meta, replace_meta, permissions, src_node=node, src_version_id=src_version_id, is_copy=is_copy)) - if is_move: + if is_move and (src_account, src_container, src_name) != (dest_account, dest_container, dest_name): self._delete_object(user, src_account, src_container, path) return dest_version_ids[0] if len(dest_version_ids) == 1 else dest_version_ids