[Repoze-dev] Repoze CVS: obob_helper.py
Chris McDonough
chrism at agendaless.com
Thu Sep 13 00:58:07 UTC 2007
Update of /home/repoze/cvs/repoze.zope2/repoze/zope2
In directory laguna.palladion.com:/tmp/cvs-serv17270/repoze/zope2
Modified Files:
obob_helper.py
Log Message:
Add path_element method and tests.
Index: obob_helper.py
===================================================================
RCS file: /home/repoze/cvs/repoze.zope2/repoze/zope2/obob_helper.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- obob_helper.py 13 Sep 2007 00:07:46 -0000 1.3
+++ obob_helper.py 13 Sep 2007 00:58:05 -0000 1.4
@@ -1,3 +1,5 @@
+from paste import httpexceptions
+
from zope.security.management import newInteraction
from zope.security.management import endInteraction
@@ -74,12 +76,41 @@
self.environ = environ
self.config = config
self.request = None
+ self.browser_path = None
def setup(self):
self.request = makeRequest(self.environ)
newInteraction()
self.request.processInputs()
+ def teardown(self):
+ endInteraction()
+
+ def path_elements(self, path):
+ # remember path for later use
+ self.browser_path = path
+
+ # Clean up the path list
+ if path.startswith('/'):
+ path=path[1:]
+ if path.endswith('/'):
+ path=path[:-1]
+
+ clean = []
+
+ for item in path.split('/'):
+ # Make sure that certain things that dont make sense
+ # cannot be traversed.
+ if item in ('REQUEST', 'aq_self', 'aq_base'):
+ raise httpexceptions.HTTPNotFound(path)
+ if not item or item=='.':
+ continue
+ elif item == '..':
+ del clean[-1]
+ else: clean.append(item)
+
+ return clean
+
def invoke(self, published):
return mapply(published,
positional = self.request.args,
@@ -91,9 +122,6 @@
context = self.request,
bind=1)
- def teardown(self):
- endInteraction()
-
def before_traverse(self, current, name):
# XXX implement
pass
_______________________________________________
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