Thanks Brian, that does seem to be what I'm after, however, I couldn't make it do what I expected. After many attempts at solving the problem, I defined a PUT method that seems to be called instead of the PUT_factory when uploading from Composer into the webdav_src_port. Is this what would be expected? If so, I think I misunderstand the use of PUT_factory.
Here is a quick primer on what happens when a PUT occurs. Lets say you do a PUT on /foo/bar/file.html, an object *that already exists* in the system. In this case: - the publisher traverses to the object /foo/bar/file.html - if the HTTP request method is GET or POST, it looks for index_html. Otherwise (as in this case), it looks for a method on the object matching the HTTP method (PUT). So if /foo/bar/file.html already exists, it's PUT method will be called. This is the case for editing / updating existing objects. Where the PUT_factory comes in is when /foo/bar/file.html does *not* yet exist. In this case: - the publisher traverses to /foo/bar/file.html. When it asks 'bar' for 'file.html' ( assuming 'bar' is a Folder), 'bar' finds that it doesn't exist so it returns a special object called a 'NullResource'. NullResource is a class defined in the lib/python/webdav package, and its sole purpose is to have a PUT method that will be called in this case (where no object exists yet). The PUT implementation of NullResource objects first tries to delegate to self.PUT_factory(...), which gives app developers an opportunity to expand on the default handling of a PUT on a non-existing resource. The NullResource is an acquirer, so the developer can implement a PUT_factory as a method of the container, or as a Python Script, whatever, to override the default behavior of the NullResource PUT. The default behavior (used if no PUT_factory is found), is to try to 'do the right thing' based on the mime-type or file extension (create a DTMLDocument for .txt, .html; Image for .gif, .jpg; File for anything else). Hopefully this sheds some light on what happens underneath and make the PUT_factory document more useful - if you still can't get PUT_factory to work as expected you might want to contact the author (Tres) to make sure it is up to date (I can't tell from a glance - but knowing Tres I suspect it is up to date :). Brian Lloyd brian@digicool.com Software Engineer 540.371.6909 Digital Creations http://www.digicool.com