[Repoze-dev] Repoze CVS: publisher.py
Tres Seaver
tseaver at agendaless.com
Wed Sep 12 15:29:48 UTC 2007
Update of /home/repoze/cvs/repoze.obob/repoze/obob
In directory laguna.palladion.com:/tmp/cvs-serv16134/repoze/obob
Modified Files:
publisher.py
Log Message:
- Normalize strategy for default plug points; note request contract issues.
Index: publisher.py
===================================================================
RCS file: /home/repoze/cvs/repoze.obob/repoze/obob/publisher.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- publisher.py 12 Sep 2007 15:19:09 -0000 1.2
+++ publisher.py 12 Sep 2007 15:29:46 -0000 1.3
@@ -12,11 +12,12 @@
if root is None:
raise ValueError("No 'root'!")
- self.root = root
if not callable(root):
raise ValueError("'root' not callable!")
+ self.root = root
+
if request_factory is not None:
if not callable(request_factory):
raise ValueError("'request_factory' not callable!")
@@ -25,7 +26,7 @@
if before_traverse is not None:
if not callable(before_traverse):
raise ValueError("'before_traverse' not callable!")
- self.before_traverse = before_traverse
+ self.before_traverse = before_traverse
if traverse is not None:
if not callable(traverse):
@@ -35,7 +36,7 @@
if before_invoke is not None:
if not callable(before_invoke):
raise ValueError("'before_invoke' not callable!")
- self.before_invoke = before_invoke
+ self.before_invoke = before_invoke
if invoke is not None:
if not callable(invoke):
@@ -69,18 +70,15 @@
"""
request = self.request_factory(environ)
root = current = self.root(request)
- def _noop(*args, **kw):
- pass
- _bt = self.before_traverse or _noop
- _bi = self.before_invoke or _noop
- for name in request['PATH_INFO'].split('/'):
- _bt(current, name, request)
+ for name in request['PATH_INFO'].split('/'): # XXX, contract?
+ self.before_traverse(current, name, request)
current = self.traverse(current, name)
- published = request['PUBLISHED'] = current
+ published = request['PUBLISHED'] = current # XXX, contract?
_bi(published, request)
+ self.before_invoke(published, request)
result = self.invoke(published, request)
status, headers, body_iter = self._mapResult(request, result)
@@ -90,14 +88,19 @@
for chunk in body_iter:
yield chunk
+ # Default implementations for plug points.
def request_factory(self, environ):
- # Default implementation
return environ
+ def before_traverse(self, current, name, request):
+ pass
+
def traverse(self, current, name):
- # Default implementation
return current[name]
+ def before_invoke(self, published, request):
+ pass
+
def invoke(self, published, request):
return published(request)
_______________________________________________
Repoze-dev mailing list
Repoze-dev at lists.repoze.org
http://lists.repoze.org/mailman/listinfo/repoze-dev
More information about the Repoze-dev
mailing list