Brent Verner
brent at rcfile.org
Wed Feb 7 08:59:53 EST 2001
Hi, First off, Gregory, thanks for writing this nice software :) Secondly, after looking into mod_python and mod_snake, I've decided that _I_ like mod_python (the base python/apache binding) much better than mod_snake. Now, I'm not a python programmer, but there's no better way to learn than to do, so last night I started hacking up a module/handler to handle documents having embedded HTML, the feature which drew me toward mod_snake at first. What I intend to do with this module is have it: 1) parse (so to speak) a document containing HTML-embedded python code into pure python code. My tentative direction is to: a) create a python file that looks like ======================================================== env = {} def embedded_output_hook(req): env = req.subprocess_env req.write("""<html> <head> <title>""" req.write( req.uri ) req.write("""</title> </head> <body> """ for i in env.keys(): req.write("""<b>""") req.write( i ) req.write(""": """) req.write( env[i] ) req.write("""</b><br> """) # for req.write("""</body </html> """) ======================================================== from an HTML-embedded file of: ======================================================== <html> <head> <title><?= req.uri ?></title> </head> <body> <? for i in env.keys(): ?> <b><?= i ?>: <?= env[i] ?></b><br> <? # for ?> </body> </html> ======================================================== and the module will call embedded_output_hook(req) from the loaded module. Also, I've thought of having calls to content_type/auth/cleanup functions which may be defined in the document... 2) save those parsed files to a cache directory, where they'll actually be loaded from when the correspondeing HTML-embedded file is requested via the handler. Of course I'm stat()ing the files to make sure the parsed/cached file is up to date. That is all fairly simple, from the overview, but I do have a few questions before I go too far down the wrong road :): 1) is this approach sane, or is there a more elegant/efficient way to handle this? 2) To create the pure-python file from the embedded document, I'm pretty sure some restrictions will have to be made on the location/designation of functions. What is a reasonable set of restrictions that can/should be placed on this so the module doesn't become a major-hack-of-a-buncha-special-cases :) 3) I'm using load_module(...) to load the pure-python files. Is there any way (a different one?) that will allow the loaded module to access globals from the module's environment, i.e., database connections, et. al. 4) Is there any way to have multile 'AddHandler' types in the same config section? If not, will you accept clean patches to do so? comments and discussion are requested. I'm going to do this, I just want to make sure I do something that is maximally useful :) I'll not be resonding to this thread until the weekend, cause I've got some real (non-python :() work that _must_ get done to free up my weekend to get on with this hack. thanks. brent -- "We want to help, but we wouldn't want to deprive you of a valuable learning experience." http://openbsd.org/mail.html
|