Quixote 0.5.1 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.1 ------------------------ * (incompatible change for anyone doing HTTP upload with Quixote) Improved support for HTTP upload requests: any HTTP request with a Content-Type of "multipart/form-data" -- which is generally only used for uploads -- is now represented by HTTPUploadRequest, a subclass of HTTPRequest, and the uploaded files themselves are represented by Upload objects. See doc/upload.txt for details. * (possible incompatible changes for anyone subclassing Publisher, or using it for custom purposes) Various rearrangements and refactoring in the Publisher class. Added create_request() method, which takes responsibility for creating the HTTPRequest (or HTTPUploadRequest) object away from parse_request(). As a consequence, the signature of parse_request() has changed. Added process_request() method. Changed publish() so it catches exceptions coming from either parse_request() or process_request(). Consult the source code (publish.py) for details. * A new subpackage, quixote.server, is intended for code that publishes a Quixote application through HTTP, making it possible to run Quixote applications without having to configure Apache or some other full-blown Web server. Right now there's only an implementation on top of Medusa; contributions of support for Python's BaseHTTPServer, Twisted, or other frameworks would be welcome. * Modified SessionManager.maintain_session() so it explicitly removes a session if that session used to have useful info (ie. exists in the session manager), but no longer does (patch by Jon Corbet). * Make the PTL compiler a bit smarter about recognizing "template" lines; PTL code should now be able to use 'template' as an identifier, which is handy when converting existing Python code to PTL. * Replaced HTTPRequest.redirect() with a cleaner, more general version supplied by Andreas Kostyrka. Redirects to fully relative URLs (no leading slash) now work. * Added support for putting bits of JavaScript into HTML form documents: added HTTPResponse.add_javascript() to collect snippts of JavaScript code, and Form._render_javascript() to emit them as part of the HTML document. * Added global convenience functions get_path() and redirect(). * Change Publisher so it never modifies SCRIPT_NAME or PATH_INFO. * Fixed bug in quixote.sendmail._add_recip_headers(): it crashed if passed an empty list. * Factor out get_action_url() method in Form class. * Add the HTML version of the documentation to the source release. -- Greg Ward - software developer gward@mems-exchange.org MEMS Exchange http://www.mems-exchange.org