1
# -*- test-case-name: twisted.web.test.test_woven -*-
5
__version__ = "$Revision: 1.23 $"[11:-2]
7
from twisted.python import reflect
8
from twisted.web import resource
9
from twisted.web.woven import model, view, controller, interfaces, template
11
class Page(model.MethodModel, controller.Controller, view.View):
13
@cvar appRoot: Set this to True if you want me to call
14
request.rememberRootURL() in my getChild, so you can later use
15
request.getRootURL() to get the URL to this "application"'s root
16
resource. (You don't have to worry if there will be multiple
17
instances of this Page involved in a single request; I'll only
18
call it for the upper-most instance).
23
def __init__(self, *args, **kwargs):
24
templateFile = kwargs.setdefault('templateFile', None)
25
inputhandlers = kwargs.setdefault('inputhandlers', None)
26
controllers = kwargs.setdefault('controllers', None)
27
templateDirectory = kwargs.setdefault('templateDirectory', None)
28
template = kwargs.setdefault('template', None)
30
del kwargs['templateFile']
31
del kwargs['inputhandlers']
32
del kwargs['controllers']
33
del kwargs['templateDirectory']
34
del kwargs['template']
36
model.Model.__init__(self, *args, **kwargs)
42
controller.Controller.__init__(self, self.model,
43
inputhandlers=inputhandlers,
44
controllers=controllers)
46
view.View.__init__(self, self.model, controller=self,
47
templateFile=templateFile,
48
templateDirectory = templateDirectory,
50
self.controller = self
51
self.controllerRendered = 0
53
def getChild(self, name, request):
54
# Don't call the rememberURL if we already did once; That way
55
# we can support an idiom of setting appName as a class
56
# attribue *even if* the same class is used more than once in
57
# a hierarchy of Pages.
58
if self.appRoot and not request.getRootURL():
59
request.rememberRootURL()
60
return controller.Controller.getChild(self, name, request)
63
def renderView(self, request):
64
return view.View.render(self, request,
65
doneCallback=self.gatheredControllers)
67
class LivePage(model.MethodModel, controller.LiveController, view.LiveView):
71
def __init__(self, m=None, templateFile=None, inputhandlers=None,
72
templateDirectory=None, controllers=None, *args, **kwargs):
73
template = kwargs.setdefault('template', None)
74
del kwargs['template']
76
model.Model.__init__(self, *args, **kwargs)
82
controller.LiveController.__init__(self, self.model,
83
inputhandlers=inputhandlers,
84
controllers=controllers)
86
view.View.__init__(self, self.model, controller=self,
87
templateFile=templateFile,
88
templateDirectory=templateDirectory,
90
self.controller = self
91
self.controllerRendered = 0
94
def getChild(self, name, request):
95
# Don't call the rememberPath if we already did once; That way
96
# we can support an idiom of setting appName as a class
97
# attribue *even if* the same class is used more than once in
98
# a hierarchy of Pages.
99
if self.appRoot and not request.getRootURL():
100
request.rememberRootURL()
101
return controller.Controller.getChild(self, name, request)
103
def renderView(self, request):
104
return view.View.render(self, request,
105
doneCallback=self.gatheredControllers)