[Checkins] SVN: z3c.traverser/trunk/ added principal namespace, version bump

Bernd Dorn bernd.dorn at lovelysystems.com
Tue May 1 07:50:25 EDT 2007


Log message for revision 74961:
  added principal namespace, version bump

Changed:
  A   z3c.traverser/trunk/CHANGES.txt
  U   z3c.traverser/trunk/setup.py
  A   z3c.traverser/trunk/src/z3c/traverser/configure.zcml
  A   z3c.traverser/trunk/src/z3c/traverser/namespace.py
  A   z3c.traverser/trunk/src/z3c/traverser/namespace.txt
  U   z3c.traverser/trunk/src/z3c/traverser/tests.py

-=-
Added: z3c.traverser/trunk/CHANGES.txt
===================================================================
--- z3c.traverser/trunk/CHANGES.txt	2007-05-01 11:22:00 UTC (rev 74960)
+++ z3c.traverser/trunk/CHANGES.txt	2007-05-01 11:50:25 UTC (rev 74961)
@@ -0,0 +1,9 @@
+=======
+Changes
+=======
+
+After 1.1.1 (1.1.2)
+===================
+
+- Added principal namespace, see namespace.txt
+


Property changes on: z3c.traverser/trunk/CHANGES.txt
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: z3c.traverser/trunk/setup.py
===================================================================
--- z3c.traverser/trunk/setup.py	2007-05-01 11:22:00 UTC (rev 74960)
+++ z3c.traverser/trunk/setup.py	2007-05-01 11:50:25 UTC (rev 74961)
@@ -3,7 +3,7 @@
 
 setup(
     name = 'z3c.traverser',
-    version = '0.1.1',
+    version = '0.1.2',
     author = "Zope Community",
     author_email = "zope3-dev at zope.org",
     description = open("README.txt").read(),

Added: z3c.traverser/trunk/src/z3c/traverser/configure.zcml
===================================================================
--- z3c.traverser/trunk/src/z3c/traverser/configure.zcml	2007-05-01 11:22:00 UTC (rev 74960)
+++ z3c.traverser/trunk/src/z3c/traverser/configure.zcml	2007-05-01 11:50:25 UTC (rev 74961)
@@ -0,0 +1,10 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope">
+
+  <view
+      name="principal" type="*"
+      provides="zope.traversing.interfaces.ITraversable" for="*"
+      factory=".namespace.principal"
+      />
+
+</configure>


Property changes on: z3c.traverser/trunk/src/z3c/traverser/configure.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: z3c.traverser/trunk/src/z3c/traverser/namespace.py
===================================================================
--- z3c.traverser/trunk/src/z3c/traverser/namespace.py	2007-05-01 11:22:00 UTC (rev 74960)
+++ z3c.traverser/trunk/src/z3c/traverser/namespace.py	2007-05-01 11:50:25 UTC (rev 74961)
@@ -0,0 +1,13 @@
+from zope.traversing.namespace import view
+from zope.publisher.interfaces import Unauthorized
+
+class principal(view):
+
+    """a principal namespace"""
+    
+    def traverse(self, name, ignored):
+        self.request.shiftNameToApplication()
+        pid = self.request.principal.id
+        if name != pid:
+            raise Unauthorized("++principal++%s" % name)
+        return self.context


Property changes on: z3c.traverser/trunk/src/z3c/traverser/namespace.py
___________________________________________________________________
Name: svn:keywords
   + Id
Name: svn:eol-style
   + native

Added: z3c.traverser/trunk/src/z3c/traverser/namespace.txt
===================================================================
--- z3c.traverser/trunk/src/z3c/traverser/namespace.txt	2007-05-01 11:22:00 UTC (rev 74960)
+++ z3c.traverser/trunk/src/z3c/traverser/namespace.txt	2007-05-01 11:50:25 UTC (rev 74961)
@@ -0,0 +1,40 @@
+=====================
+Additional Namespaces
+=====================
+
+Principal
+=========
+
+The ``principal`` namespace allows to differentiate between usernames
+in the url. This is usefull for caching on a per principal basis. The
+namespace itself doesn't change anything. It just checks if the
+principal is the one that is logged in.
+
+    >>> from z3c.traverser import namespace
+    >>> from zope.publisher.browser import TestRequest
+    >>> class Request(TestRequest):
+    ...     principal = None
+    ...
+    ...     def shiftNameToApplication(self):
+    ...         pass
+
+    >>> class Principal(object):
+    ...     def __init__(self, id):
+    ...         self.id = id
+
+    >>> pid = 'something'
+    >>> r = Request()
+    >>> r.principal = Principal('anonymous')
+
+If we have the wrong principal we get an Unauthorized exception.
+
+    >>> ns = namespace.principal(object(), r)
+    >>> ns.traverse('another', None)
+    Traceback (most recent call last):
+    ...
+    Unauthorized: ++principal++another
+
+Otherwise not
+
+    >>> ns.traverse('anonymous', None)
+    <object object at ...>


Property changes on: z3c.traverser/trunk/src/z3c/traverser/namespace.txt
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: z3c.traverser/trunk/src/z3c/traverser/tests.py
===================================================================
--- z3c.traverser/trunk/src/z3c/traverser/tests.py	2007-05-01 11:22:00 UTC (rev 74960)
+++ z3c.traverser/trunk/src/z3c/traverser/tests.py	2007-05-01 11:50:25 UTC (rev 74961)
@@ -25,9 +25,13 @@
 def test_suite():
     return unittest.TestSuite((
         doctest.DocFileSuite(
-            'README.txt',
-            setUp=testing.setUp, tearDown=testing.tearDown,
-            optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS),
+        'README.txt',
+        setUp=testing.setUp, tearDown=testing.tearDown,
+        optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS),
+    doctest.DocFileSuite(
+        'namespace.txt',
+        setUp=testing.setUp, tearDown=testing.tearDown,
+        optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS),
         ))
 
 if __name__ == '__main__':



More information about the Checkins mailing list