Move this resource and members to destPath.

This method is only called, when support_recursive_move() returns True.

MOVE is frequently used by clients to rename a file without changing its parent collection, so it’s not appropriate to reset all live properties that are set at resource creation. For example, the DAV:creationdate property value SHOULD remain the same after a MOVE.

Preconditions (ensured by caller):

  • there must not be any conflicting locks or If-header on source

  • there must not be any conflicting locks or If-header on destination

  • destPath must not exist

  • destPath must not be a member of this resource

This method must be prepared to handle recursive moves. This implies that child errors must be reported as tuple list [ (<ref-url>, <DAVError>), … ]. See

This function

  • moves this resource and all members to destPath.

  • MUST NOT move associated locks. Instead, if the source (or children thereof) have locks, then these locks should be removed.

  • SHOULD maintain associated live properties, when applicable See

  • MUST maintain associated dead properties

  • raises HTTP_FORBIDDEN for read-only resources

  • raises HTTP_INTERNAL_ERROR on error

An implementation may choose to apply other semantics. For example copying ‘/by_tag/cool/myres’ to ‘/by_tag/new/myres’ may simply add a ‘new’ tag to ‘my_res’.

This method is only called, when self.support_recursive_move() returns True. Otherwise, the request server implements MOVE using delete/copy.

This method MAY be implemented in order to improve performance.