import random
from twisted.application import service
from twisted.application import internet
from nevow import inevow
from nevow import appserver
from nevow import loaders
from nevow import rend
from nevow import tags
from nevow.stan import directive
class Mine(rend.Page):
addSlash = True
docFactory = loaders.stan(
T.html[
T.head[
T.title["This is title"]
],
T.body[
T.h1(id="header")["Welcome"],
T.ol(data=directive("theList"), render=directive("sequence"))[
T.span(pattern="header")["HEADER"],
T.li(pattern="item")["Stuff: ",T.span(render=directive("string")), "!"],
T.span(pattern="divider")["-----"],
T.div(pattern="empty")["Nothing."],
T.span(pattern="footer")["FOOTER"],
],
T.ol(data=directive("empty"), render=directive("sequence"))[
T.span(pattern="header")["HEADER"],
T.li(pattern="item")["Stuff: ",T.span(render=directive("string")), "!"],
T.span(pattern="divider")["-----"],
T.div(pattern="empty")["Nothing."],
T.span(pattern="footer")["FOOTER"],
],
T.span(render=directive("foo"))[
"This entire node, including the span tag, will be replaced by \
a randomly chosen node from below:",
T.div(pattern="one", style="color: red")["one"],
T.table(pattern="two")[
T.tr[T.td["two"],T.td["two"],T.td["two"]]
],
T.ol(pattern="three")[
T.li["three"],
T.li["three"],
T.li["three"],
]
]
]
]
)
def render_foo(self, context, data):
return inevow.IQ(context).onePattern(random.choice(['one', 'two', 'three']))
def data_theList(self, context, data):
return [random.randint(0, 5000) for x in range(random.randint(0, 10))]
def data_empty(self, context, data):
return []
application = service.Application("disktemplates")
internet.TCPServer(
8080,
appserver.NevowSite(
Mine()
)
).setServiceParent(application)
|