diff options
| author | Chris McDonough <chrism@agendaless.com> | 2008-07-20 03:04:58 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2008-07-20 03:04:58 +0000 |
| commit | bb5d643b83cde30d2fa37aaae21a8d4b225f584b (patch) | |
| tree | bbfc266fb1161dc6189a1d25f93903ca378373e1 /repoze/bfg/traversal.py | |
| parent | 6c840ed454d91741273984bcbf9a32404a78a2c1 (diff) | |
| download | pyramid-bb5d643b83cde30d2fa37aaae21a8d4b225f584b.tar.gz pyramid-bb5d643b83cde30d2fa37aaae21a8d4b225f584b.tar.bz2 pyramid-bb5d643b83cde30d2fa37aaae21a8d4b225f584b.zip | |
- Add find_interface API.
Diffstat (limited to 'repoze/bfg/traversal.py')
| -rw-r--r-- | repoze/bfg/traversal.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/repoze/bfg/traversal.py b/repoze/bfg/traversal.py index a9f127841..ee66ae887 100644 --- a/repoze/bfg/traversal.py +++ b/repoze/bfg/traversal.py @@ -3,6 +3,7 @@ import urllib from zope.interface import classProvides from zope.interface import implements from zope.location.location import located +from zope.location.location import LocationIterator from zope.location.interfaces import ILocation from repoze.bfg.interfaces import ITraverser @@ -63,3 +64,10 @@ class NaiveTraverser(object): return ob, name, path +def find_interface(context, interface): + """ Return an object providing 'interface' anywhere in the parent + chain of 'context' or None if no object providing that interface + can be found in the parent chain """ + for location in LocationIterator(context): + if interface.providedBy(location): + return location |
