|
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
|