Initial import to Tizen
[profile/ivi/python-twisted.git] / doc / web / howto / listings / wait_for_it.py
1 import sys
2 from twisted.web.template import XMLString, Element, renderer, flatten
3 from twisted.internet.defer import Deferred
4
5 sample = XMLString(
6     """
7     <div xmlns:t="http://twistedmatrix.com/ns/twisted.web.template/0.1">
8     Before waiting ...
9     <span t:render="wait"></span>
10     ... after waiting.
11     </div>
12     """)
13
14 class WaitForIt(Element):
15     def __init__(self):
16         Element.__init__(self, loader=sample)
17         self.deferred = Deferred()
18
19     @renderer
20     def wait(self, request, tag):
21         return self.deferred.addCallback(
22             lambda aValue: tag("A value: " + repr(aValue)))
23
24 def done(ignore):
25     print("[[[Deferred fired.]]]")
26
27 print('[[[Rendering the template.]]]')
28 it = WaitForIt()
29 flatten(None, it, sys.stdout.write).addCallback(done)
30 print('[[[In progress... now firing the Deferred.]]]')
31 it.deferred.callback("<value>")
32 print('[[[All done.]]]')