[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