FileResource.handle_copy(dest_path, *, depth_infinity)

Handle a COPY request natively.

This method is called by the COPY handler after checking for valid request syntax and making sure that there are no conflicting locks and If-headers. Depending on the return value, this provider can control further processing:


handle_copy() did not do anything. WsgiDAV will process the request by calling copy_move_single() for every resource, bottom-up.


handle_copy() has successfully performed the COPY request. HTTP_NO_CONTENT/HTTP_CREATED will be reported to the DAV client.

List of errors:

handle_copy() tried to perform the copy request, but failed completely or partially. A list of errors is returned like [ (<ref-url>, <DAVError>), ... ] These errors will be reported to the client.

DAVError raised:

handle_copy() refuses to perform the copy request. The DAVError will be reported to the client.

An implementation may choose to apply other semantics and return True. For example copying ‘/by_tag/cool/myres’ to ‘/by_tag/hot/myres’ may simply add a ‘hot’ tag. In this case, the resource might still be available by other URLs, so locks and properties are not removed.

This default implementation returns False, so standard processing takes place.

Implementation of this method is OPTIONAL.