WebDAV library for python3.
Consists of a *server* that is ready to run
Serve and the DAV package that provides WebDAV server(!) functionality.
* WebDAV level 1
* Level 2 (LOCK, UNLOCK)
* Experimental iterator support
It plays nice with
* Mac OS X Finder
* Windows Explorer
This package does *not* provide client functionality.
After installation of this package you will have a new script in you
$PYTHON/bin directory called *davserver*. This serves as the main entry point
to the server.
Example (using pip)::
pip install PyWebDAV3
davserver -D /tmp -n
Example (unpacking file locally)::
tar xvzf PyWebDAV3-$VERSION.tar.gz
python setup.py develop
davserver -D /tmp -n
For more information: https://github.com/andrewleech/PyWebDAV3
0.9.11 (August 3 2016)
Added unit test to run litmus webdav testing suite.
Added travis-ci job to run said test, but it has false positives. Runs locally correctly.
Fixed a number of unicode issues from the python3 translation identified by the unit test.
Still a number of litmus tests failing to do with props and file locking.
0.9.10 (July 21 2016)
The original package name PyWebDAV was being referenced in lib, causing the server to fail
No other change in functionality
0.9.9 (July 8 2016)
Updated to support Python 3.
No other change in functionality
0.9.8 (March 25 2011)
Restructured. Moved DAV package to pywebdav.lib. All integrators must simply replace
''from DAV'' imports to ''from pywebdav.lib''.
Remove BufferingHTTPServer, reuse the header parser of BaseHTTPServer.
Fix issue 44: Incomplete PROPFIND response
0.9.4 (April 15 2010)
Add somme configuration setting variable to enable/disable iterator and chunk support
Removed os.system calls thus fixing issue 32
Fixed issue 14
Removed magic.py module - replaced with mimetypes module
Print User-Agent information in log request.
Fix issue 13 : return http 1.0 compatible response (not chunked) when request http version is 1.0
Enhance logging mechanism
Fix issue 15 : I've error when I execute PUT action with Apple Finder client
Fix issue 14 : config.ini boolean parameter reading issue
0.9.3 (July 2 2009)
Setting WebDAV v2 as default because LOCK and UNLOCK seem
to be stable by now. -J parameter is ignored and will go away.
Fix for PROPFIND to return *all* properties
Fixed do_PUT initialisation
Added REPORT support
Added support for gzip encoding
Fix for wrong --port option
Handle paths correctly for Windows related env
Included mimetype check for files
based on magic.py from Jason Petrone. Included
magic.py into this package. All magic.py code
(c) 2000 Jason Petrone. Included from
[Joerg Friedrich, Simon Pamies]
Status check not working when server is running
Fixed wrong time formatting for Last-Modified
and creationdate (must follow RFC 822 and 3339)
0.9.2 (May 11 2009)
Fixed COPY, MOVE, DELETE to support locked
Fixed PROPFIND to return 404 for non existing
objects and also reduce property bloat
Implemented fully working LOCK and UNLOCK based
on in memory lock/token database. Now fully supports
cadaver and Mac OS X Finder.
Fixed MKCOL answer to 201
Fixed MSIE webdav headers
Make propfind respect the depth from queries
Add ETag in the header of GET. This is needed to implement
GroupDAV, CardDAV and CalDAV.
Handle the "Expect 100-continue" header
Remove debug statements and remove logging
Use the Host header in baseuri if set.
Adding If-Match on PUT and DELETE
0.9.1 (May 4th 2009)
Restructured the structure a bit: Made server package
a real python package. Adapted error messages. Prepared
Fix for time formatting bug. Thanks to Ian Kallen
Small fixes for WebDavServer (status not handled correctly) and
propfind (children are returned from a PROPFIND with "Depth: 0")
0.8 (Jul 15th 2008)
First try of an implementation of the LOCK and UNLOCK features.
Still very incomplete (read: very incomplete) and not working
in this version.
Some code cleanups to prepare restructuring
Port to minidom because PyXML isn't longer maintained
[Martin v. Loewis]
utils.py: Makes use of DOMImplementation class to create a new xml document
Uses dom namespace features to create elements within DAV: namespace
davcmd.py: Missing an indent in loop on remove and copy operations on trees, the
effect was that only the last object was removed/copied : always leads
to a failure when copying collections.
propfind.py: missing a return at the end of the createResponse method (case of a
propfind without xml body, should act as a allprops).
Added MySQL auth support brought by Vince Spicer
Added INI file support also introduced by Vince
Some minor bugfixes and integration changes.
Added instance counter to make multiple instances possible
Extended --help text a bit
Added bugfixes for buggy Mac OS X Finder implementation
Finder tries to stat .DS_Store without checking if it exists
Cleaned up readme and install files
Moved license to extra file
Added distutils support
Refactored module layout
Refactored class and module names
Added commandline support
Added daemonize support
Added logging facilities
Added extended arguments
some more things I can't remember
Changes since 0.5.1
Updated to work with latest 4Suite
Changes since 0.5
data.py must now return COLLECTION or OBJECT when getting asked for
resourcetype. propfind.py will automatically generate the right xml
<href> now only contains the path
changed HTTP/1.0 header to HTTP/1.1 which makes it work with WebFolders
added DO_AUTH constant to AuthServer.py to control whether authentication
should be done or not.
added chunked responses in davserver.py
One step in order to get a server with keep-alive one day.
we now use 4DOM instead if PyDOM
the URI in a href is quoted
complete rewrite of the PROPFIND stuff:
error responses are now generated when a property if not found or not accessible
namespace handling is now better. We forget any prefix and create them ourselves later in the response.
added superclass iface.py in DAV/ in order to make implementing
interface classes easier. See data.py for how to use it.
Also note that the way data.py handles things might have changed from
the previous release (if you don't like it wait for 1.0!)
added functions to iface.py which format creationdate and lastmodified
lots of bugfixes
Changes since 0.3
removed hard coded base uri from davserver.py and replaced by
a reference to the dataclass. Added this to iface.py where you
have to define it in your subclass.
added davcmd.py which contains utility functions for copy and move
reimplemented DELETE and removed dependencies to pydom. move actual
delete method to davcmd.
fixed bugs in errors.py, needs revisiting anyway..
URIs are now unquoted in davserver.py before being used
paths in data.py are quoted in system calls in order to support
blanks in pathnames (e.g. mkdir '%s' )
switched to exceptions when catching errors from the interface class
added exists() method to data.py
added more uri utility functions to utils.py
millenium bugfixes ;-)
TODO: Brief introduction on what you do with files - including link to relevant help section.