ANNOUNCE: Quixote 0.5

Greg Ward gward@mems-exchange.org
Mon, 10 Jun 2002 11:34:52 -0400


Quixote 0.5 is now available for download from:
  http://www.mems-exchange.org/software/quixote/

Quixote is yet another framework for developing Web applications in
Python.  The design goals were:

  1) To allow easy development of Web applications where the
     accent is more on complicated programming logic than
     complicated templating.

  2) To make the templating language as similar to Python as possible,
     in both syntax and semantics.  The aim is to make as many of the
     skills and structural techniques used in writing regular Python
     code applicable to Web applications built using Quixote.

  3) No magic.  When it's not obvious what to do in
     a certain case, Quixote refuses to guess.

If you view a web site as a program, and web pages as subroutines,
Quixote just might be the tool for you.  If you view a web site as a
graphic design showcase, and each web page as an individual work of art,
Quixote is probably not what you're looking for.

Quixote was primarily written by Andrew Kuchling, Neil Schemenauer, and
Greg Ward: {amk,nas,gward}@mems-exchange.org.

The Quixote documentation is available online:
  http://www.mems-exchange.org/software/quixote/doc/

Support for Quixote is available on the quixote-users@mems-exchange.org
mailing list:
  http://mail.mems-exchange.org/mailman/listinfo/quixote-users


CHANGES in Quixote 0.5
----------------------

  * To fix installation problems on Win98 and Mac OS (pre OS X), 
    setup.py now uses os.curdir instead of ''.

  * Overhauled handling of PublishError exceptions: Quixote now 
    looks for the nearest _q_exception_handler() function in your
    application's namespace; the format_*error() methods of Publisher
    are gone.

  * Documented and overhauled the session management API.  If you
    were previously using session management, you will almost certainly
    need to change your code; see doc/session-mgmt.txt and
    doc/session-upgrade.txt.  If you've been wanting to use session
    management in your application but were put off by the lack of
    documentation, see doc/session-mgmt.txt.

    Specific changes:
      * removed the global singleton SessionManager object in session.py
        and several related functions
      * removed everything having to do with "application state", an
        unnecessary abstraction caused by premature over-generalization
      * removed the 'actual_user' attribute from Session -- it is
        specific to the MEMS Exchange and just confuses matters
        in Quixote
      * made most instance attributes of Session private
      * defined a sensible persistence API that should work with
        a wide variety of session persistence schemes
      * COOKIE_* config variables renamed to SESSION_COOKIE_*

  * Fix HTTPResponse so that the cookie domain and path can be None,
    and they will simply not be set in the cookie sent to the client --
    that way the browser will simply do the right thing.  Set
    COOKIE_DOMAIN and COOKIE_PATH in config.py to None, since that's
    usually fine.  (You may need to set COOKIE_PATH to "/".)

  * Subtle but far-reaching change to the publishing algorithm: objects
    found by the publisher to handle the terminal component of a URL can
    now be strings as well as callables; a string simply substitutes for
    a callable's return value.  The immediate reason for this was to
    allow _q_getname() functions to return a string, but a consequence
    is that you can now put static text in global variables and simply
    publish them.

  * Add CHECK_SESSION_ADDR config variable to control whether we
    check that requests in a session all come from the same IP address,
    as a defence against playback attacks.  (Thanks to Jonathan Corbet.)

  * In error reports, print the traceback first, ahead of form variables,
    cookies, and the environment.

  * Include the HTTP_USER_AGENT variable in access log lines.

  * Add 'sort' option to SelectWidget class, to force the list of
    allowed values to be sorted in case-insensitive lexicographic order,
    with None first.

-- 
Greg Ward - software developer                gward@mems-exchange.org
MEMS Exchange                            http://www.mems-exchange.org