Attention

You are looking at outdated documentation for version 1.x. A newer version is available.

2.2. Running as Pylons controller

This example shows how configure a Pylons application, so that URLs starting with /dav/… are handled by WsgiDAV. (Tested with Pylons 0.9.7)

First, we create a URL mapping by adding these lines to <pylons_project>/config/routing.py:

# CUSTOM ROUTES HERE
# Add WsgiDAV server at /dav
map.connect('wdavroot', '/dav', path_info='/', controller='wdav')
map.connect('wdavres', '/dav/{path_info:.*}', controller='wdav')

Then add the controller by creating a new file <pylons_project>/controllers/wdav.py with this content:

# -*- coding: utf-8 -*-
from tempfile import gettempdir
from wsgidav.fs_dav_provider import FilesystemProvider
from wsgidav.wsgidav_app import DEFAULT_CONFIG, WsgiDAVApp

def _make_app():
    rootpath = gettempdir()
    provider = FilesystemProvider(rootpath)

    config = DEFAULT_CONFIG.copy()
    config.update({
        "mount_path": "/dav",
        "provider_mapping": {"/": provider},
        "user_mapping": {},
        "verbose": 1,
        })
    return WsgiDAVApp(config)

WdavController = _make_app()

Note that we have to use the mount_path option to tell WsgiDAV about the application root.

In the example above, we used a root share (‘/’), so WebDAV resources will be available as

http://192.168.0.2:5000/dav/resource.bin

If the provider is configured with a share name:

config.update({
    "mount_path": "/dav",
    "provider_mapping": {"/my_share": provider},
    ...
    })

the WebDAV resources will be available as

http://192.168.0.2:5000/dav/my_share/resource.bin