I'm totally new to Twisted although everything I try so far has been a lot of
fun. I have a really simple situation it seems I cannot wrap my head around.
Although the tutorial have been really helpful I cannof find how to fix this
I created a "login" method that connects with my db through adbapi and
returns a deferred. I'm using it with pyamf and it's working ok. Now I have to
implement the same thing but accept logins through a standard web page. I
followed the Twisted web in 60 seconds tutorial and created a render_POST
method that processes the login method. The only catch is that I'm returning a
mako template page. Ok, finally my problem: I cannot make it return the result
of the deferred: if I debug the response I see a "<Deferred at ...>" but
not the intended message. Actually if I add a callback method that just prints
the response, I can get it (but since that prints the message in the log, it
doesn't help). What am I missing?
Here's some code to help me explain my problem:
"""LogIn post processing"""
isLeaf = True
def render_POST(self, request):
rsp = None
errc = None
usr = User()
username = cgi.escape(request.args['username'])
passwd = cgi.escape(request.args['passwd'])
# here I get the answer of the process. I would expect the login
# message but instead I get a deferred repr object.
rsp = usr.login(request, username, passwd)
except Exception, e:
errc = e.args
# this should return the contents of postproc.mak (a regular file)
# but with certain keywords replaced.
def login(self, request, username, password):
rp = defer.Deferred()
resp = u'Unidentified reason'
resp = u'No account exists for the given username'
resp = u'Password does not match'
resp = u'Ok'
def eb(failure): rp.errback(failure)
d = self.conn_pool.runQuery('select password from user where '