summaryrefslogtreecommitdiff
path: root/repoze
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2010-07-24 08:32:21 +0000
committerChris McDonough <chrism@agendaless.com>2010-07-24 08:32:21 +0000
commit2eb64f7a8bc7830667c3cb924bb5c13be3859b38 (patch)
tree948d9de136078a1cb56be1c874aa0b2ca82d1115 /repoze
parentaf7a1d9a699f8fafba717244641de5de7cab77e8 (diff)
downloadpyramid-2eb64f7a8bc7830667c3cb924bb5c13be3859b38.tar.gz
pyramid-2eb64f7a8bc7830667c3cb924bb5c13be3859b38.tar.bz2
pyramid-2eb64f7a8bc7830667c3cb924bb5c13be3859b38.zip
Remove match_val feature: it's a pretty nuisance
Diffstat (limited to 'repoze')
-rw-r--r--repoze/bfg/configuration.py61
-rw-r--r--repoze/bfg/tests/test_configuration.py82
-rw-r--r--repoze/bfg/zcml.py9
3 files changed, 9 insertions, 143 deletions
diff --git a/repoze/bfg/configuration.py b/repoze/bfg/configuration.py
index ca5809cca..443da9d61 100644
--- a/repoze/bfg/configuration.py
+++ b/repoze/bfg/configuration.py
@@ -544,8 +544,8 @@ class Configurator(object):
request_type=None, route_name=None, request_method=None,
request_param=None, containment=None, attr=None,
renderer=None, wrapper=None, xhr=False, accept=None,
- header=None, path_info=None, match_val=None,
- custom_predicates=(), context=None, _info=u''):
+ header=None, path_info=None, custom_predicates=(),
+ context=None, _info=u''):
""" Add a :term:`view configuration` to the current
configuration state. Arguments to ``add_view`` are broken
down below into *predicate* arguments and *non-predicate*
@@ -765,32 +765,6 @@ class Configurator(object):
``True``.
- match_val
-
- The ``match_val`` value represents the presence of a value
- in the :term:`URL dispatch` structure added to the request
- named ``matchdict``. ``matchdict`` represents the match
- values from the route pattern (e.g. if the route pattern has
- ``:foo`` in it, and the route matches, a key will exist in
- the matchdict named ``foo``). If the value does not contain
- a colon, the entire value will be considered to be the name
- of a matchdict key (e.g. ``action``). If the value does
- contain a ``:`` (colon), it will be considered a name/value
- pair (e.g. ``action:generate.html`` or ``action:\w+.html``).
- The right hand side following the colon should be a regular
- expression.
-
- If the value does not contain a colon, the key specified by
- the name must be present in the URL dispatch matchdict for
- this predicate to be true; the value of the key is ignored.
- If the value does contain a colon, the name implied by the
- right hand must be present in the matchdict *and* the
- regular expression specified on the right hand side of the
- colon must match the value for the name in the matchdict for
- this predicate to be true.
-
- .. note:: This feature is new as of :mod:`repoze.bfg` 1.3.
-
custom_predicates
This value should be a sequence of references to custom
@@ -841,7 +815,7 @@ class Configurator(object):
request_method=request_method, request_param=request_param,
containment=containment, attr=attr,
renderer=renderer, wrapper=wrapper, xhr=xhr, accept=accept,
- header=header, path_info=path_info, match_val=match_val,
+ header=header, path_info=path_info,
custom_predicates=(), context=context, _info=u''
)
view_info = deferred_views.setdefault(route_name, [])
@@ -852,7 +826,7 @@ class Configurator(object):
request_method=request_method, path_info=path_info,
request_param=request_param, header=header, accept=accept,
containment=containment, request_type=request_type,
- view_match_val=match_val, custom=custom_predicates)
+ custom=custom_predicates)
derived_view = self._derive_view(view, permission, predicates, attr,
renderer, wrapper, name, accept, order,
@@ -1052,6 +1026,8 @@ class Configurator(object):
ignored when attached to a route that has a ``*traverse``
remainder marker in its path.
+ .. note:: This feature is new as of :mod:`repoze.bfg` 1.3.
+
Predicate Arguments
path
@@ -1759,7 +1735,7 @@ class Configurator(object):
def _make_predicates(xhr=None, request_method=None, path_info=None,
request_param=None, header=None, accept=None,
containment=None, request_type=None,
- view_match_val=None, traverse=None, custom=()):
+ traverse=None, custom=()):
# PREDICATES
# ----------
@@ -1887,29 +1863,6 @@ def _make_predicates(xhr=None, request_method=None, path_info=None,
predicates.append(request_type_predicate)
h.update('request_type:%r' % id(request_type))
- if view_match_val is not None:
- match_name = view_match_val
- match_val = None
- if ':' in match_name:
- match_name, match_val = match_name.split(':', 1)
- try:
- match_val = re.compile(match_val)
- except re.error, why:
- raise ConfigurationError(why[0])
- def view_match_val_predicate(context, request):
- matchdict = getattr(request, 'matchdict', None)
- if matchdict is None:
- return False
- if match_val is None:
- return match_name in matchdict
- val = matchdict.get(match_name)
- if val is None:
- return False
- return match_val.match(val) is not None
- weights.append(1 << 9)
- predicates.append(view_match_val_predicate)
- h.update('view_match_val:%r=%r' % (match_name, match_val))
-
if traverse is not None:
# ``traverse`` can only be used as a *route* "predicate"; it
# adds 'traverse' to the matchdict if it's specified in the
diff --git a/repoze/bfg/tests/test_configuration.py b/repoze/bfg/tests/test_configuration.py
index 02fbc7a06..25c5544b6 100644
--- a/repoze/bfg/tests/test_configuration.py
+++ b/repoze/bfg/tests/test_configuration.py
@@ -1414,68 +1414,6 @@ class ConfiguratorTests(unittest.TestCase):
request.path_info = '/'
self._assertNotFound(wrapper, None, request)
- def test_add_view_with_match_val_badregex(self):
- from repoze.bfg.exceptions import ConfigurationError
- view = lambda *arg: 'OK'
- config = self._makeOne()
- self.assertRaises(ConfigurationError,
- config.add_view, view=view, match_val='action:a\\')
-
- def test_add_view_with_match_val_no_matchdict(self):
- from repoze.bfg.exceptions import NotFound
- view = lambda *arg: 'OK'
- config = self._makeOne()
- config.add_view(view=view, match_val='action')
- wrapper = self._getViewCallable(config)
- request = self._makeRequest(config)
- self.assertRaises(NotFound, wrapper, None, request)
-
- def test_add_view_with_match_val_noval_match(self):
- view = lambda *arg: 'OK'
- config = self._makeOne()
- config.add_view(view=view, match_val='action')
- wrapper = self._getViewCallable(config)
- request = self._makeRequest(config)
- request.matchdict = {'action':'whatever'}
- self.assertEqual(wrapper(None, request), 'OK')
-
- def test_add_view_with_match_val_noval_nomatch(self):
- view = lambda *arg: 'OK'
- config = self._makeOne()
- config.add_view(view=view, match_val='action')
- wrapper = self._getViewCallable(config)
- request = self._makeRequest(config)
- request.matchdict = {'notaction':'whatever'}
- self._assertNotFound(wrapper, None, request)
-
- def test_add_view_with_match_val_val_match(self):
- view = lambda *arg: 'OK'
- config = self._makeOne()
- config.add_view(view=view, match_val='action:\d')
- wrapper = self._getViewCallable(config)
- request = self._makeRequest(config)
- request.matchdict = {'action':'1'}
- self.assertEqual(wrapper(None, request), 'OK')
-
- def test_add_view_with_match_val_val_nomatch(self):
- view = lambda *arg: 'OK'
- config = self._makeOne()
- config.add_view(view=view, match_val=r'action:\d')
- wrapper = self._getViewCallable(config)
- request = self._makeRequest(config)
- request.matchdict = {'action':'abc'}
- self._assertNotFound(wrapper, None, request)
-
- def test_add_view_with_match_val_val_missing(self):
- from repoze.bfg.exceptions import NotFound
- view = lambda *arg: 'OK'
- config = self._makeOne()
- config.add_view(view=view, match_val=r'action:\d')
- wrapper = self._getViewCallable(config)
- request = self._makeRequest(config)
- request.matchdict = {'notaction':'1'}
- self.assertRaises(NotFound, wrapper, None, request)
-
def test_add_view_with_custom_predicates_match(self):
view = lambda *arg: 'OK'
config = self._makeOne()
@@ -3001,7 +2939,6 @@ class Test__make_predicates(unittest.TestCase):
accept='accept',
containment='containment',
request_type='request_type',
- view_match_val='view_match_val',
custom=('a',)
)
order2, _, _ = self._callFUT(
@@ -3013,7 +2950,6 @@ class Test__make_predicates(unittest.TestCase):
accept='accept',
containment='containment',
request_type='request_type',
- view_match_val='view_match_val',
custom=('a',)
)
order3, _, _ = self._callFUT(
@@ -3025,8 +2961,7 @@ class Test__make_predicates(unittest.TestCase):
accept='accept',
containment='containment',
request_type='request_type',
- view_match_val='view_match_val',
- )
+ )
order4, _, _ = self._callFUT(
xhr='xhr',
request_method='request_method',
@@ -3035,7 +2970,6 @@ class Test__make_predicates(unittest.TestCase):
header='header',
accept='accept',
containment='containment',
- request_type='request_type',
)
order5, _, _ = self._callFUT(
xhr='xhr',
@@ -3044,7 +2978,6 @@ class Test__make_predicates(unittest.TestCase):
request_param='param',
header='header',
accept='accept',
- containment='containment',
)
order6, _, _ = self._callFUT(
xhr='xhr',
@@ -3052,34 +2985,26 @@ class Test__make_predicates(unittest.TestCase):
path_info='path_info',
request_param='param',
header='header',
- accept='accept',
)
order7, _, _ = self._callFUT(
xhr='xhr',
request_method='request_method',
path_info='path_info',
request_param='param',
- header='header',
)
order8, _, _ = self._callFUT(
xhr='xhr',
request_method='request_method',
path_info='path_info',
- request_param='param',
)
order9, _, _ = self._callFUT(
xhr='xhr',
request_method='request_method',
- path_info='path_info',
)
order10, _, _ = self._callFUT(
xhr='xhr',
- request_method='request_method',
)
order11, _, _ = self._callFUT(
- xhr='xhr',
- )
- order12, _, _ = self._callFUT(
)
self.assertEqual(order1, order2)
self.failUnless(order3 > order2)
@@ -3091,7 +3016,6 @@ class Test__make_predicates(unittest.TestCase):
self.failUnless(order9 > order8)
self.failUnless(order10 > order9)
self.failUnless(order11 > order10)
- self.failUnless(order12 > order11)
def test_ordering_importance_of_predicates(self):
order1, _, _ = self._callFUT(
@@ -3119,9 +3043,6 @@ class Test__make_predicates(unittest.TestCase):
request_type='request_type',
)
order9, _, _ = self._callFUT(
- view_match_val='view_match_val',
- )
- order10, _, _ = self._callFUT(
custom=('a',),
)
self.failUnless(order1 > order2)
@@ -3132,7 +3053,6 @@ class Test__make_predicates(unittest.TestCase):
self.failUnless(order6 > order7)
self.failUnless(order7 > order8)
self.failUnless(order8 > order9)
- self.failUnless(order9 > order10)
def test_ordering_importance_and_number(self):
order1, _, _ = self._callFUT(
diff --git a/repoze/bfg/zcml.py b/repoze/bfg/zcml.py
index b350d5ea7..820dc9442 100644
--- a/repoze/bfg/zcml.py
+++ b/repoze/bfg/zcml.py
@@ -141,11 +141,6 @@ class IViewDirective(Interface):
description=(u'Accepts a regular expression.'),
required = False)
- match_val = TextLine(
- title=u'Matchdict name/value pair in the form "name=<regex>"',
- description=u'Regular expression matching for matchdict values',
- required = False)
-
custom_predicates = Tokens(
title=u"One or more custom dotted names to custom predicate callables",
description=(u"A list of dotted name references to callables that "
@@ -173,7 +168,6 @@ def view(
accept=None,
header=None,
path_info=None,
- match_val=None,
traverse=None,
custom_predicates=(),
context=None,
@@ -206,8 +200,7 @@ def view(
request_method=request_method, request_param=request_param,
containment=containment, attr=attr, renderer=renderer,
wrapper=wrapper, xhr=xhr, accept=accept, header=header,
- path_info=path_info, match_val=match_val,
- custom_predicates=custom_predicates,
+ path_info=path_info, custom_predicates=custom_predicates,
_info=_context.info)
discriminator = ['view', context, name, request_type, IView, containment,