I've attached revision 4 of my filesystem.py module for mapping static
filesystem files and legacy Python CGI scripts into Quixote.
Changes in this revision:
* The FilesystemFile and FilesystemFolder classes have been renamed
StaticFile and StaticFilesFolder, which I believe are more precise names
now that the module provides a wrapper for filesystem-based CGI scripts.
* The StaticFile, StaticFilesFolder and CGIScript classes now take an
optional  parameter 'follow_symlinks' that controls whether symbolic links
should be followed; by default they are not.
* If an exception occurs during execution of a CGI script, stdin and stdout
will still be restored to their original values.
* The StaticFile, StaticFilesFolder and CGIScript classes now insist on the
initial path being absolute.
Here are some examples of usage:
1. Map an individual filesystem file (possibly a symbolic link) and cache
its contents. (Because 'stylesheet.css' isn't a valid identifier name, we need
to use setattr to set it as an attribute of the current module.)
     this_module = sys.modules[__name__]
     setattr(
         this_module,
         "stylesheet.css",
         StaticFile(
             "/htdocs/legacy_app/stylesheet.css",
             use_cache=1,
             follow_symlinks=1
         )
     )
2. Map a complete filesytem folder containing static files, by default
not caching their contents.
     notes = StaticFilesFolder("/htdocs/legacy_app/notes")
3. Map a CGI script and cache the compiled script.
     this_module = sys.modules[__name__]
     setattr(
         this_module,
          "results.cgi",
          CGIScript("/htdocs/legacy_app/results.cgi", use_cache=1)
     )
Hamish Lawson