|
Radek Bartoň
blackhex at post.cz
Thu Dec 8 16:18:02 EST 2005
> You might need to be running mod_python 3.2.5b for it to work, but I
> would not
> have expected that to be the case. This code was actual code I tried
> and tested
> before I sent it, albeit on mod_python 3.2.5b.
I have installed 3.1.4 from gentoo's portage.
> If using mod_python.publisher, as:
>
> index = MyClass
>
> you should I believe get NotFound as it will not automatically create
> instances
> of classes for you if a class type is referenced. I know Nicolas hand
> it in mind
> to perhaps support this, but personally I don't think it is a good
> idea as it could
> introduce other problems where people think methods are not
> accessible but
> may actually. The authorisation schemes as written also would not
> work for the
> instance created. Ie., authorisation could only be done at file scope.
With file test.py:
class MyClass:
def __init__(self):
pass # some initialization
def __call__(self, req):
return "whole class"
def method1(self, req):
return "method1"
def method2(self, req):
return "method2"
index = MyClass()
and URLs http://locahost/test/ http://localhost/test/index/method1 and
http://localhost/test/index/method2 I didn't get any Not Found error.
And by the way it does all I want. Here is some example of using this
approach:
from mod_python import Session,util
class MyClass:
def __init__(self):
pass # some initialization
def __call__(self, req):
session = Session.Session(req)
# lazy evaluation
if session.has_key('logged') and session['logged']:
return """
<HTML>
<HEAD>
</HEAD>
<BODY>
Logged
</BODY>
</HTML>"""
else:
return """
<HTML>
<HEAD>
</HEAD>
<BODY>
<FORM method="POST" action="/test/index/submit">
<INPUT test="text" name="user" size="10"><BR>
<INPUT TYPE="password" name="password" size="10"><BR>
<INPUT TYPE="submit" name="submint" value="Login">
</FORM>
</BODY>
</HTML>"""
def submit(self, req):
form_user = req.form['user'].value
form_password = req.form['password'].value
session = Session.Session(req)
if form_user == 'test' and form_password == 'test':
session['logged'] = True
session.save()
util.redirect(req, '/test')
index = MyClass()
Thank you all.
|