Here's the list of changes:
* Refactor the Publisher object. The new design gives "namespaces" more
control over traversal. Packages are no longer imported automatically.
By default, namespaces must be 'Directory' instances. The _q_access
hook is gone. The 'namespace_stack' attribute is also gone.
* Provide a Publisher object that works more like Quixote 1 (available in
the 'publish1' module). Also, restore the original form framework with
the name 'form1'.
* Stop passing HTTPRequest to exported functions and _q_lookup(). You
will need to use get_request() to access it. Also, require that
_q_index be explicitly exported.
* Remove the HTTPRequest.redirect() method.
* Split error log and access log functionality into a separate class.
Try to simplify site configuration. Configuration options can now be
passed as keyword args to the Publisher class. The setup_logs() and
shutdown_logs() methods are gone. Logs are now opened when the publisher
is initialized.
* Support $-substitution in templates, as in Python 2.4's string.Template
class. $-substitution is applied to every '$'-containing literal in a
template. Templates written before this change, if they contain literals
containing '$', *must* be converted by replacing each '$' with '$$'.
* Remove support for old style templates and support for versions of
Python older than 2.3.
* Use a common pattern for interfacing with HTTP servers. Simplify
and cleanup the Medusa and Twisted code. Add a SCGI server module
(it makes more sense to be part of Quixote rather than in the "scgi"
package). Add a simple standalone HTTP server.
* Rename HTTPRequest.get_form_var() to get_field(). That matches the
terminology used by RFCs.
* Add HTTPResponse.set_expires() method.
* Add HTTPRequest.get_query() method. Use it instead of the QUERY_STRING
environment variable. Add HTTPRequest.get_status_code().
* Compile .ptl files to .pyc files. Also, remove 'htmltext' and
'TemplateIO' from the globals of .ptl modules.
* Move page compression functionality to http_response module.
* Add a 'content_type' attribute to HTTPResponse. Refactor response
to make it harder to screw up the character set of the response.
* Add quixote.util.get_directory_path() for obtaining the list of
_q_traversed() Directories (essentially a replacement for
'namespace_stack')
* Move missing trailing slash detection and action to Directory.__call__()
and remove FIX_TRAILING_SLASH configuration option.
* Remove RUN_ONCE configuration variable and 'exit_now' attribute of
publisher.
* Stop generating 'Status' header for servers that don't need it. Add
'include_status' keyword to HTTPResponse.write().
* Overhaul the demo.
We still have a lot of work to do before a stable release. The
documentation needs to be updated. The mod_python publisher is
broken. The Quixote 1 style publisher probably needs some more
work.
There are some major changes in this release. Upgrading from
Quixote 1 will be difficult. Don't feel that you must to upgrade.
I will make bugfix releases of Quixote 1 as necessary.
Neil