summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Merickel <michael@merickel.org>2012-04-11 00:00:16 -0500
committerMichael Merickel <michael@merickel.org>2012-04-11 00:00:16 -0500
commit49a3582d9e8a1345cfcc49ecb362a4dc14564040 (patch)
tree2e150428d552d7a1a00a4c701849aa171852b885
parent6d2187e8706618861c3a5cc9e66c8f11bfc62364 (diff)
downloadpyramid-49a3582d9e8a1345cfcc49ecb362a4dc14564040.tar.gz
pyramid-49a3582d9e8a1345cfcc49ecb362a4dc14564040.tar.bz2
pyramid-49a3582d9e8a1345cfcc49ecb362a4dc14564040.zip
request properties are now added in bulk
-rw-r--r--pyramid/config/factories.py11
-rw-r--r--pyramid/tests/test_config/test_factories.py24
-rw-r--r--pyramid/tests/test_util.py4
3 files changed, 18 insertions, 21 deletions
diff --git a/pyramid/config/factories.py b/pyramid/config/factories.py
index eb4442e98..ccbf3bbe9 100644
--- a/pyramid/config/factories.py
+++ b/pyramid/config/factories.py
@@ -10,6 +10,7 @@ from pyramid.interfaces import (
)
from pyramid.traversal import DefaultRootFactory
+from pyramid.util import InstancePropertyMixin
class FactoriesConfiguratorMixin(object):
@action_method
@@ -118,8 +119,8 @@ class FactoriesConfiguratorMixin(object):
"""
callable = self.maybe_dotted(callable)
- if name is None:
- name = callable.__name__
+ name, callable = InstancePropertyMixin._make_property(
+ callable, name=name, reify=reify)
def register():
plist = self.registry.queryUtility(IRequestProperties)
@@ -130,7 +131,7 @@ class FactoriesConfiguratorMixin(object):
self.registry.registerHandler(_set_request_properties,
(INewRequest,))
- plist.append((name, callable, reify))
+ plist.append((name, callable))
intr = self.introspectable('request properties', name,
self.object_description(callable),
@@ -143,6 +144,4 @@ class FactoriesConfiguratorMixin(object):
def _set_request_properties(event):
request = event.request
plist = request.registry.queryUtility(IRequestProperties)
- for prop in plist:
- name, callable, reify = prop
- request.set_property(callable, name=name, reify=reify)
+ request._set_properties(plist)
diff --git a/pyramid/tests/test_config/test_factories.py b/pyramid/tests/test_config/test_factories.py
index 0930f9603..1dfeda34c 100644
--- a/pyramid/tests/test_config/test_factories.py
+++ b/pyramid/tests/test_config/test_factories.py
@@ -73,7 +73,7 @@ class TestFactoriesMixin(unittest.TestCase):
callable = lambda x: None
config.set_request_property(callable, name='foo')
plist = config.registry.getUtility(IRequestProperties)
- self.assertEqual(plist, [('foo', callable, False)])
+ self.assertEqual(set(p[0] for p in plist), set(['foo']))
def test_set_request_property_with_unnamed_callable(self):
from pyramid.interfaces import IRequestProperties
@@ -81,7 +81,7 @@ class TestFactoriesMixin(unittest.TestCase):
def foo(self): pass
config.set_request_property(foo, reify=True)
plist = config.registry.getUtility(IRequestProperties)
- self.assertEqual(plist, [('foo', foo, True)])
+ self.assertEqual(set(p[0] for p in plist), set(['foo']))
def test_set_request_property_with_property(self):
from pyramid.interfaces import IRequestProperties
@@ -89,7 +89,7 @@ class TestFactoriesMixin(unittest.TestCase):
callable = property(lambda x: None)
config.set_request_property(callable, name='foo')
plist = config.registry.getUtility(IRequestProperties)
- self.assertEqual(plist, [('foo', callable, False)])
+ self.assertEqual(set(p[0] for p in plist), set(['foo']))
def test_set_multiple_request_properties(self):
from pyramid.interfaces import IRequestProperties
@@ -100,8 +100,7 @@ class TestFactoriesMixin(unittest.TestCase):
config.set_request_property(bar, name='bar')
config.commit()
plist = config.registry.getUtility(IRequestProperties)
- self.assertEqual(plist, [('foo', foo, True),
- ('bar', bar, False)])
+ self.assertEqual(set(p[0] for p in plist), set(['foo', 'bar']))
def test_set_multiple_request_properties_conflict(self):
from pyramid.exceptions import ConfigurationConflictError
@@ -125,20 +124,19 @@ class TestFactoriesMixin(unittest.TestCase):
request = DummyRequest(config.registry)
event = Event()
config.registry.notify(event)
- callables = event.request.callables
- self.assertEqual(callables, [('foo', foo, False),
- ('bar', foo, True)])
+ plist = event.request.plist
+ self.assertEqual(set(p[0] for p in plist), set(['foo', 'bar']))
class DummyRequest(object):
- callables = None
+ plist = None
def __init__(self, registry):
self.registry = registry
- def set_property(self, callable, name, reify):
- if self.callables is None:
- self.callables = []
- self.callables.append((name, callable, reify))
+ def _set_properties(self, properties):
+ if self.plist is None:
+ self.plist = []
+ self.plist.extend(properties)
diff --git a/pyramid/tests/test_util.py b/pyramid/tests/test_util.py
index 2a69190f7..e83ad5922 100644
--- a/pyramid/tests/test_util.py
+++ b/pyramid/tests/test_util.py
@@ -3,12 +3,12 @@ from pyramid.compat import PY3
class Test_InstancePropertyMixin(unittest.TestCase):
def _makeOne(self):
- cls = self._targetClass()
+ cls = self._getTargetClass()
class Foo(cls):
pass
return Foo()
- def _targetClass(self):
+ def _getTargetClass(self):
from pyramid.util import InstancePropertyMixin
return InstancePropertyMixin