mirror of https://github.com/tLDP/LDP
78 lines
2.2 KiB
Python
78 lines
2.2 KiB
Python
#!/usr/bin/python
|
|
|
|
from twisted.web.woven import model, view, controller
|
|
from twisted.web.woven import widgets, input
|
|
from twisted.web import domhelpers
|
|
|
|
#from TwistedQuotes import quoters
|
|
|
|
|
|
import cgi
|
|
|
|
class MQuote(model.WModel):
|
|
def __init__(self):
|
|
print 'Loading MQuote'
|
|
model.WModel.__init__(self)
|
|
#self._filename = filename
|
|
#self._quoter = quoters.FortuneQuoter([filename])
|
|
self.quote = "Hello, world!"
|
|
self.title = "Quotes Galore!"
|
|
self.newQuote = ""
|
|
|
|
def updateQuote(self):
|
|
self.quote = 'Hello, world!'
|
|
|
|
class QuoteWidget(widgets.Widget):
|
|
def setUp(self, request, node, data):
|
|
"""
|
|
Set up this Widget object before it gets rendered into HTML.
|
|
|
|
Since self is a Widget, I can use the higher level widget API to add a
|
|
Text widget to self. I then rely on Widget.generateDOM to convert
|
|
from Widgets into the Document Object Model.
|
|
"""
|
|
self.add(widgets.Text(cgi.escape(data)))
|
|
|
|
|
|
class VQuote(view.WView):
|
|
templateFile = "home.xhtml"
|
|
|
|
def setUp(self, request, document):
|
|
"""
|
|
Set things up for this request.
|
|
"""
|
|
self.model.updateQuote()
|
|
|
|
def wvfactory_quote(self, request, node, model):
|
|
"""Create a widget which knows how to render my model's quote."""
|
|
domhelpers.clearNode(node)
|
|
return QuoteWidget(model)
|
|
|
|
def wvfactory_title(self, request, node, model):
|
|
"""Create a widget which knows how to render my model's title."""
|
|
domhelpers.clearNode(node)
|
|
return widgets.Text(model)
|
|
|
|
|
|
class NewQuoteHandler(input.SingleValue):
|
|
def check(self, request, data):
|
|
if data:
|
|
return 1
|
|
|
|
def commit(self, request, node, newQuote):
|
|
print "committing new quote", `newQuote`
|
|
file = open(self.model.getQuoteFilename(), 'a')
|
|
file.write('\n%\n' + newQuote)
|
|
|
|
|
|
class CQuote(controller.WController):
|
|
def wcfactory_newQuote(self, model):
|
|
"""Create a handler which knows how to verify input in a form with the
|
|
name "newQuote"."""
|
|
return NewQuoteHandler(model)
|
|
|
|
|
|
view.registerViewForModel(VQuote, MQuote)
|
|
controller.registerControllerForModel(CQuote, MQuote)
|
|
|