On Fri, Nov 07, 2003 at 08:40:09AM -0600, Skip Montanaro wrote: > * Package nesting - Do people tend to nest packages or use other objects > (classes, for example) to effect nesting? Or do you normally keep > your URL space pretty flat so nesting is not an issue? What Neil said. Usually modules and packages are used for fixed things -- /catalog, /user, etc. The module then has a _q_getname() that looks up the relevant information and returns a WhateverUI instance that can be traversed further. > * Keeping old URLs - Do you just use mod_rewrite or is there a way > within Quixote to map (for example), > http:/www.musi-cal.com/edit.html > onto Quixote's way of doing things? You could implement this with a _q_getname(), since 'edit.html' isn't a legal Python identifier: def _q_getname (request, component): if component == 'edit.html': return request.response.redirect('/edit') But my inclination would be to use a RedirectPermanent or a RewriteRule in the server configuration, because that way the redirection is handled in fast C code, not in slower Python code. The exception might be if the redirect was really complicated with messy regex patterns; it might be easier to write and debug in Python. (On a similar note for e-mail: I'm finding it easier to write filtering rules for Exim using Python than to struggle with remembering Exim's filtering language. I only do this about once a month, enough time to forget everything about the syntax, so doing it in Python means it's much more familiar.) > * result caching - Quixote doesn't seem to do any of this. Mason makes > caching essentially trivial to handle on a component-by-component > basis, so you don't need to get your hands dirty setting up caching > proxy servers and can control caching at a fine-grained level, > addressing hot spots as they pop up. Interesting; see http://www.masonhq.com/docs/manual/Devel.html#data_caching . For Quixote the problem reduces to "how do you cache the output of Python callables?" I don't know of a solution as fancy as Mason's, though you could easily do a little memoization wrapper around a function. > * Session management - Mason uses the perl Apache::Session module. We > store our session info in our MySQL database. Is there any support > for this? See http://www.mems-exchange.org/software/quixote/doc/session-mgmt.html for an explanation of session management. I haven't seen any code specifically for a MySQL database. (Probably wouldn't be a bad idea to add it, since MySQL is quite widely used.) --amk