summaryrefslogtreecommitdiff
path: root/repoze/bfg/view.py
diff options
context:
space:
mode:
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)
+
+