Version 1.0b1 of Quixote is now available:
http://www.mems-exchange.org/software/quixote/
http://www.mems-exchange.org/software/files/quixote/Quixote-1.0b1.tar.gz
Changes from 0.7a3
------------------
* Remove an underscore from the Session attributes __remote_address,
__creation_time, and __access_time. Note that if you have pickled
Session objects you will need to upgrade them somehow.
* Use a simpler version of ptl_compile.parse() if using Python >= 2.3.
Unfortunately, the hacks are still needed for older versions.
* Change the behavior of session cookies if SESSION_COOKIE_PATH is
unset. The old behavior was to not set the 'path' attribute of the
session cookie. The new behavior is to use SCRIPT_NAME. Also, set
the 'path' attribute when revoking the session cookie. Some
browsers treat it as a separate cookie if it has a different path.
* Don't try to compress stream responses.
* Refactor PublishError exception handling. Requests will now be
logged even if they raise an exception. This also allows some
simplification to the Medusa and Twisted server code.
* Make HTTPRequest.get_server() return HTTP_HOST if it is available
rather than using SERVER_NAME and SERVER_PORT.
* If "Host" header is present, use it to set SERVER_NAME and
SERVER_PORT.
* Make HTTPRequest.get_url() escape unsafe characters in the path part
of the URL.
* Use a simple counter instead of using the 'random' module when
trying to generate unique names for uploaded files.
* Allow arbitrary mapping objects to be used as the right hand operand
when formating htmltext objects (i.e. as an argument to the
htmltext.__mod__ method). The _c_htmltext implemention used to only
allow 'dict' instances. Change _c_htmltext to allow any mapping.
Also, instead of accessing every item in the mapping, use
PyObject_GetItem() (aka __getitem__) to retrieve the values as they
are required. That matches the behavior of PyString_Format().
* Don't set DEBUG_LOG in demo.conf. Extra logs files are confusing
when people are starting out.
* Significant form2 package changes. Remove FormComponent and related
machinery. Allow widgets to control how they are rendered within
forms (by overriding the form_render() method. Reorganize rendering
code in the form module so that it is easier to subclass form and
provide a different look. Change the parsing behavior of widgets.
They no longer parse themselves when __init__ is called. Instead,
each widget has a parse() method that calls _parse(), if it hasn't
been called already, and returns the widgets value. Allow
Widget._parse() to raise WidgetValueError in order to signal a
parsing error. Add a CompositeWidget class. Remove
Widget.get_value() since parse() seems to be sufficient.
* Add HTTPS header when running under twisted_http.py.
* Add cimport as a standard Quixote extension.
* Disable FIX_TRAILING_SLASH in demo.conf. It can be confusing when
trying to get the demo running.
* Allow _q_exports to contain mappings of external names to internal
names.
* Twisted does not unquote the path so make twisted_http.py do it.
* Implement error logging for mod_python handler.