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