[Checkins] SVN: z3c.versionedresource/trunk/ * Feature: Add ability to specify multiple layers.
Stephan Richter
srichter at cosmos.phy.tufts.edu
Sun Sep 28 01:53:14 EDT 2008
Log message for revision 91567:
* Feature: Add ability to specify multiple layers.
Changed:
U z3c.versionedresource/trunk/CHANGES.txt
U z3c.versionedresource/trunk/setup.py
U z3c.versionedresource/trunk/src/z3c/versionedresource/README.txt
U z3c.versionedresource/trunk/src/z3c/versionedresource/list.py
U z3c.versionedresource/trunk/src/z3c/versionedresource/tests/test_doc.py
-=-
Modified: z3c.versionedresource/trunk/CHANGES.txt
===================================================================
--- z3c.versionedresource/trunk/CHANGES.txt 2008-09-27 19:55:48 UTC (rev 91566)
+++ z3c.versionedresource/trunk/CHANGES.txt 2008-09-28 05:53:11 UTC (rev 91567)
@@ -2,6 +2,11 @@
CHANGES
=======
+Version 0.4.0 (2008-09-27)
+--------------------------
+
+* Feature: Add ability to specify multiple layers.
+
Version 0.3.0 (2008-08-09)
--------------------------
Modified: z3c.versionedresource/trunk/setup.py
===================================================================
--- z3c.versionedresource/trunk/setup.py 2008-09-27 19:55:48 UTC (rev 91566)
+++ z3c.versionedresource/trunk/setup.py 2008-09-28 05:53:11 UTC (rev 91567)
@@ -23,7 +23,7 @@
setup (
name='z3c.versionedresource',
- version='0.4.0dev',
+ version='0.4.0',
author = "Stephan Richter and the Zope Community",
author_email = "zope3-dev at zope.org",
description = "Versioned Resources",
Modified: z3c.versionedresource/trunk/src/z3c/versionedresource/README.txt
===================================================================
--- z3c.versionedresource/trunk/src/z3c/versionedresource/README.txt 2008-09-27 19:55:48 UTC (rev 91566)
+++ z3c.versionedresource/trunk/src/z3c/versionedresource/README.txt 2008-09-28 05:53:11 UTC (rev 91567)
@@ -412,7 +412,8 @@
layer. Optionally a URL can be passed in to alter the resource URLs.
>>> resources = list.getResources(
- ... 'z3c.versionedresource.tests.test_doc.ITestLayer')
+ ... ['z3c.versionedresource.tests.test_doc.ITestLayer',
+ ... 'z3c.versionedresource.tests.test_doc.ITestLayer2'])
>>> sorted(resources)
[(u'zcml-subdir', <DirectoryResource u'.../testfiles/subdir'>),
(u'zcml-test.gif', <FileResource u'.../testfiles/test.gif'>)]
Modified: z3c.versionedresource/trunk/src/z3c/versionedresource/list.py
===================================================================
--- z3c.versionedresource/trunk/src/z3c/versionedresource/list.py 2008-09-27 19:55:48 UTC (rev 91566)
+++ z3c.versionedresource/trunk/src/z3c/versionedresource/list.py 2008-09-28 05:53:11 UTC (rev 91567)
@@ -34,24 +34,30 @@
if name in list:
list.remove(name)
-def getResources(layerPath, url='http://localhost/'):
- # Get the layer interface
- moduleName, layerName = layerPath.rsplit('.', 1)
- module = __import__(moduleName, {}, {}, [1])
- layer = getattr(module, layerName)
- # Now we create a test request with that layer and our custom base URL.
- request = TestRequest(environ={'SERVER_URL': url})
- zope.interface.alsoProvides(request, layer)
- # Next we look up all the resources
- return tuple(
- zope.component.getAdapters((request,), interfaces.IVersionedResource))
+def getResources(layerPaths, url='http://localhost/'):
+ resources = ()
+ for layerPath in layerPaths:
+ # Get the layer interface
+ moduleName, layerName = layerPath.rsplit('.', 1)
+ module = __import__(moduleName, {}, {}, ['None'])
+ layer = getattr(module, layerName)
+ # Now we create a test request with that layer and our custom base URL.
+ request = TestRequest(environ={'SERVER_URL': url})
+ zope.interface.alsoProvides(request, layer)
+ # Next we look up all the resources
+ resources += tuple(
+ zope.component.getAdapters(
+ (request,), interfaces.IVersionedResource))
+ return resources
def getResourceUrls(resources):
paths = []
for name, res in resources:
# For file-based resources, just report their URL.
if not isinstance(res, DirectoryResource):
- paths.append(res())
+ # Avoid duplicate paths
+ if res() not in paths:
+ paths.append(res())
# For directory resources, we want to walk the tree.
baseURL = res()
path = res.context.path
@@ -62,7 +68,10 @@
# Produce a path for the resource
relativePath = root.replace(path, '')
for file in files:
- paths.append(baseURL + relativePath + '/' + file)
+ fullPath = baseURL + relativePath + '/' + file
+ # Avoid duplicate paths
+ if fullPath not in paths:
+ paths.append(fullPath)
return paths
def storeResource(dir, name, resource, zip=False):
@@ -93,7 +102,7 @@
# Run the configuration
context = xmlconfig.file(options.zcml)
# Get resource list
- resources = getResources(options.layer, options.url)
+ resources = getResources(options.layers, options.url)
# If we only want to list the paths
if options.listOnly:
paths = getResourceUrls(resources)
@@ -117,8 +126,7 @@
parser, "Configuration", "Configuration of lookup and reporting parameters.")
config.add_option(
- '--layer', '-l', action="store", dest='layer',
- default='zope.interface.Interface',
+ '--layer', '-l', action="append", dest='layers',
help="""The layer for which to lookup the resources.""")
config.add_option(
Modified: z3c.versionedresource/trunk/src/z3c/versionedresource/tests/test_doc.py
===================================================================
--- z3c.versionedresource/trunk/src/z3c/versionedresource/tests/test_doc.py 2008-09-27 19:55:48 UTC (rev 91566)
+++ z3c.versionedresource/trunk/src/z3c/versionedresource/tests/test_doc.py 2008-09-28 05:53:11 UTC (rev 91567)
@@ -28,6 +28,9 @@
class ITestLayer(IDefaultBrowserLayer):
pass
+class ITestLayer2(IDefaultBrowserLayer):
+ pass
+
class ResourceFactory(object):
def __init__(self, request):
More information about the Checkins
mailing list