summaryrefslogtreecommitdiff
path: root/repoze
diff options
context:
space:
mode:
Diffstat (limited to 'repoze')
-rw-r--r--repoze/bfg/tests/routesapp/configure.zcml5
-rw-r--r--repoze/bfg/tests/test_zcml.py11
-rw-r--r--repoze/bfg/zcml.py12
3 files changed, 19 insertions, 9 deletions
diff --git a/repoze/bfg/tests/routesapp/configure.zcml b/repoze/bfg/tests/routesapp/configure.zcml
index acd1d9d9e..17653615a 100644
--- a/repoze/bfg/tests/routesapp/configure.zcml
+++ b/repoze/bfg/tests/routesapp/configure.zcml
@@ -3,8 +3,9 @@
<include package="repoze.bfg.includes" />
<route
- path=":id/:view_name"
- provides=".models.IFixture"/>
+ path=":id"
+ provides=".models.IFixture"
+ view_name="default"/>
<view
name="default"
diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py
index a2653f262..50d8a468a 100644
--- a/repoze/bfg/tests/test_zcml.py
+++ b/repoze/bfg/tests/test_zcml.py
@@ -290,7 +290,7 @@ class TestConnectRouteFunction(unittest.TestCase):
parent_member_name='p', parent_collection_name='c',
condition_method='GET', condition_subdomain=True,
condition_function=foo, subdomains=['a'],
- factory=foo, provides=[IDummy])
+ factory=foo, provides=[IDummy], view_name='def')
self._callFUT(directive)
self.assertEqual(len(mapper.connections), 1)
self.assertEqual(mapper.connections[0][0], ('a/b/c',))
@@ -310,6 +310,7 @@ class TestConnectRouteFunction(unittest.TestCase):
'conditions':c,
'_factory':foo,
'_provides':[IDummy],
+ 'view_name':'def',
})
def test_condition_subdomain_true(self):
@@ -403,8 +404,11 @@ class TestRouteGroupingContextDecorator(unittest.TestCase):
parent_collection_name='p')
self.assertEqual(route.parent_member_name, 'a')
self.assertEqual(route.parent_collection_name, 'p')
-
-
+
+ def test_explicit_view_name(self):
+ context = DummyContext()
+ route = self._makeOne(context, 'abc', view_name='def')
+ self.assertEqual(route.view_name, 'def')
class TestZCMLPickling(unittest.TestCase):
i = 0
@@ -760,6 +764,7 @@ class DummyRouteDirective:
subdomains = None
path = 'a/b/c'
name = None
+ view_name = ''
factory = None
provides = ()
def __init__(self, **kw):
diff --git a/repoze/bfg/zcml.py b/repoze/bfg/zcml.py
index 463090146..a0aa613da 100644
--- a/repoze/bfg/zcml.py
+++ b/repoze/bfg/zcml.py
@@ -273,6 +273,7 @@ class IRouteDirective(Interface):
"""
path = TextLine(title=u'path', required=True)
name = TextLine(title=u'name', required=False)
+ view_name = TextLine(title=u'view_name', required=False)
factory = GlobalObject(title=u'context factory', required=False)
provides = Tokens(title=u'context interfaces', required=False,
value_type=GlobalObject())
@@ -303,6 +304,8 @@ def connect_route(directive):
args.append(directive.name)
args.append(directive.path)
kw = dict(requirements=directive.requirements)
+ if directive.view_name:
+ kw['view_name'] = directive.view_name
if directive.minimize:
kw['_minimize'] = True
if directive.explicit:
@@ -349,16 +352,17 @@ class Route(zope.configuration.config.GroupingContextDecorator):
implements(zope.configuration.config.IConfigurationContext,IRouteDirective)
- def __init__(self, context, path, name=None, factory=None,
- provides=(), minimize=True, encoding=None,
- static=False, filter=None, absolute=False,
- member_name=None, collection_name=None, condition_method=None,
+ def __init__(self, context, path, name=None, view_name='', factory=None,
+ provides=(), minimize=True, encoding=None, static=False,
+ filter=None, absolute=False, member_name=None,
+ collection_name=None, condition_method=None,
condition_subdomain=None, condition_function=None,
parent_member_name=None, parent_collection_name=None,
subdomains=None, explicit=False):
self.context = context
self.path = path
self.name = name
+ self.view_name = view_name
self.factory = factory
self.provides = provides
self.minimize = minimize