Revision 79bb41b7 pithos/backends/modular.py
b/pithos/backends/modular.py | ||
---|---|---|
509 | 509 |
self.permissions.access_set(path, permissions) |
510 | 510 |
return dest_version_id |
511 | 511 |
|
512 |
def _copy_object(self, user, account, src_container, src_name, dest_container, dest_name, dest_meta={}, replace_meta=False, permissions=None, src_version=None):
|
|
513 |
if permissions is not None and user != account: |
|
512 |
def _copy_object(self, user, src_account, src_container, src_name, dest_account, dest_container, dest_name, dest_meta={}, replace_meta=False, permissions=None, src_version=None):
|
|
513 |
if permissions is not None and user != dest_account:
|
|
514 | 514 |
raise NotAllowedError |
515 |
self._can_read(user, account, src_container, src_name) |
|
516 |
self._can_write(user, account, dest_container, dest_name) |
|
517 |
src_path, src_node = self._lookup_object(account, src_container, src_name) |
|
515 |
self._can_read(user, src_account, src_container, src_name)
|
|
516 |
self._can_write(user, dest_account, dest_container, dest_name)
|
|
517 |
src_path, src_node = self._lookup_object(src_account, src_container, src_name)
|
|
518 | 518 |
self._get_version(src_node, src_version) |
519 | 519 |
if permissions is not None: |
520 |
dest_path = '/'.join((account, container, name))
|
|
520 |
dest_path = '/'.join((dest_account, dest_container, dest_name))
|
|
521 | 521 |
self._check_permissions(dest_path, permissions) |
522 |
dest_path, dest_node = self._put_object_node(account, dest_container, dest_name) |
|
522 |
dest_path, dest_node = self._put_object_node(dest_account, dest_container, dest_name)
|
|
523 | 523 |
src_version_id, dest_version_id = self._copy_version(user, src_node, src_version, dest_node) |
524 | 524 |
if src_version_id is not None: |
525 | 525 |
self._copy_data(src_version_id, dest_version_id) |
... | ... | |
531 | 531 |
return dest_version_id |
532 | 532 |
|
533 | 533 |
@backend_method |
534 |
def copy_object(self, user, account, src_container, src_name, dest_container, dest_name, dest_meta={}, replace_meta=False, permissions=None, src_version=None):
|
|
534 |
def copy_object(self, user, src_account, src_container, src_name, dest_account, dest_container, dest_name, dest_meta={}, replace_meta=False, permissions=None, src_version=None):
|
|
535 | 535 |
"""Copy an object's data and metadata.""" |
536 | 536 |
|
537 |
logger.debug("copy_object: %s %s %s %s %s %s %s %s %s", account, src_container, src_name, dest_container, dest_name, dest_meta, replace_meta, permissions, src_version)
|
|
538 |
return self._copy_object(user, account, src_container, src_name, dest_container, dest_name, dest_meta, replace_meta, permissions, src_version)
|
|
537 |
logger.debug("copy_object: %s %s %s %s %s %s %s %s %s %s", src_account, src_container, src_name, dest_account, dest_container, dest_name, dest_meta, replace_meta, permissions, src_version)
|
|
538 |
return self._copy_object(user, src_account, src_container, src_name, dest_account, dest_container, dest_name, dest_meta, replace_meta, permissions, src_version)
|
|
539 | 539 |
|
540 | 540 |
@backend_method |
541 |
def move_object(self, user, account, src_container, src_name, dest_container, dest_name, dest_meta={}, replace_meta=False, permissions=None):
|
|
541 |
def move_object(self, user, src_account, src_container, src_name, dest_account, dest_container, dest_name, dest_meta={}, replace_meta=False, permissions=None):
|
|
542 | 542 |
"""Move an object's data and metadata.""" |
543 | 543 |
|
544 |
logger.debug("move_object: %s %s %s %s %s %s %s %s", account, src_container, src_name, dest_container, dest_name, dest_meta, replace_meta, permissions) |
|
545 |
dest_version_id = self._copy_object(user, account, src_container, src_name, dest_container, dest_name, dest_meta, replace_meta, permissions, None) |
|
546 |
self._delete_object(user, account, src_container, src_name) |
|
544 |
logger.debug("move_object: %s %s %s %s %s %s %s %s %s", src_account, src_container, src_name, dest_account, dest_container, dest_name, dest_meta, replace_meta, permissions) |
|
545 |
if user != src_account: |
|
546 |
raise NotAllowedError |
|
547 |
dest_version_id = self._copy_object(user, src_account, src_container, src_name, dest_account, dest_container, dest_name, dest_meta, replace_meta, permissions, None) |
|
548 |
self._delete_object(user, src_account, src_container, src_name) |
|
547 | 549 |
return dest_version_id |
548 | 550 |
|
549 | 551 |
def _delete_object(self, user, account, container, name, until=None): |
Also available in: Unified diff