import sys
from twisted.internet.defer import Deferred
from twisted.web.template import Element, XMLString, flatten, renderer
sample = XMLString(
"""
Before waiting ...
... after waiting.
"""
)
class WaitForIt(Element):
def __init__(self):
Element.__init__(self, loader=sample)
self.deferred = Deferred()
@renderer
def wait(self, request, tag):
return self.deferred.addCallback(lambda aValue: tag("A value: " + repr(aValue)))
def done(ignore):
print("[[[Deferred fired.]]]")
print("[[[Rendering the template.]]]")
it = WaitForIt()
flatten(None, it, sys.stdout.write).addCallback(done)
print("[[[In progress... now firing the Deferred.]]]")
it.deferred.callback("")
print("[[[All done.]]]")