summaryrefslogtreecommitdiff
path: root/repoze/bfg/view.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2008-07-14 07:31:31 +0000
committerChris McDonough <chrism@agendaless.com>2008-07-14 07:31:31 +0000
commit85427fa0479aefd59bd55dca397b9a36277edade (patch)
treecafad1ccb7d3f4c9a0b953adba78cd8caae70e93 /repoze/bfg/view.py
parent9fcb68e1563e22eed1fd7cbbd10993cff30242f8 (diff)
downloadpyramid-85427fa0479aefd59bd55dca397b9a36277edade.tar.gz
pyramid-85427fa0479aefd59bd55dca397b9a36277edade.tar.bz2
pyramid-85427fa0479aefd59bd55dca397b9a36277edade.zip
Less magical templated view model: make custom template views responsible for
knowing their template's name.
Diffstat (limited to 'repoze/bfg/view.py')
-rw-r--r--repoze/bfg/view.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/repoze/bfg/view.py b/repoze/bfg/view.py
new file mode 100644
index 000000000..07c3d183d
--- /dev/null
+++ b/repoze/bfg/view.py
@@ -0,0 +1,27 @@
+from repoze.bfg.template import render_template
+
+class View(object):
+ """ Convenience base class for user-defined views """
+ def __init__(self, context, request):
+ self.context = context
+ self.request = request
+
+ def __call__(self, **kw):
+ raise NotImplementedError
+
+class TemplateView(View):
+ template = None
+ def __call__(self, **kw):
+ if self.template is None:
+ raise ValueError('a "template" attribute must be attached to '
+ 'a TemplateView')
+ return render_template(self, self.template, **kw)
+
+ def __repr__(self):
+ klass = self.__class__
+ return '<%s.%s object at %s for %s>' % (klass.__module__,
+ klass.__mame__,
+ id(self),
+ self.template)
+
+