summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-07-30 11:41:53 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2011-07-30 11:41:53 -0400
commita45da117889edba7ec0906d3af3fff7d83e5373a (patch)
tree07acef09730963088a7775b513be96ade965d551 /lib/sqlalchemy
parent086ae95614b4848c486eeb7acf2bc1b03b2a6a37 (diff)
downloadsqlalchemy-a45da117889edba7ec0906d3af3fff7d83e5373a.tar.gz
- Added public attribute ".validators" to
Mapper, an immutable dictionary view of all attributes that have been decorated with the @validates decorator. [ticket:2240] courtesy Stefano Fontanelli
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/orm/mapper.py15
-rw-r--r--lib/sqlalchemy/orm/strategies.py4
2 files changed, 15 insertions, 4 deletions
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py
index 035b72828..3c3389d79 100644
--- a/lib/sqlalchemy/orm/mapper.py
+++ b/lib/sqlalchemy/orm/mapper.py
@@ -131,7 +131,7 @@ class Mapper(object):
polymorphic_on,
"polymorphic_on")
self._dependency_processors = []
- self._validators = {}
+ self.validators = util.immutabledict()
self.passive_updates = passive_updates
self._clause_adapter = None
self._requires_row_aliasing = False
@@ -428,6 +428,15 @@ class Mapper(object):
"""
+ validators = None
+ """An immutable dictionary of attributes which have been decorated
+ using the :func:`~.orm.validates` decorator.
+
+ The dictionary contains string attribute names as keys
+ mapped to the actual validation method.
+
+ """
+
c = None
"""A synonym for :attr:`~.Mapper.columns`."""
@@ -637,7 +646,9 @@ class Mapper(object):
event.listen(manager, 'load', _event_on_load, raw=True)
elif hasattr(method, '__sa_validators__'):
for name in method.__sa_validators__:
- self._validators[name] = method
+ self.validators = self.validators.union(
+ {name : method}
+ )
manager.info[_INSTRUMENTOR] = self
diff --git a/lib/sqlalchemy/orm/strategies.py b/lib/sqlalchemy/orm/strategies.py
index 50facbf24..aacf466d6 100644
--- a/lib/sqlalchemy/orm/strategies.py
+++ b/lib/sqlalchemy/orm/strategies.py
@@ -44,11 +44,11 @@ def _register_attribute(strategy, mapper, useobject,
if useobject and prop.single_parent:
listen_hooks.append(single_parent_validator)
- if prop.key in prop.parent._validators:
+ if prop.key in prop.parent.validators:
listen_hooks.append(
lambda desc, prop: mapperutil._validator_events(desc,
prop.key,
- prop.parent._validators[prop.key])
+ prop.parent.validators[prop.key])
)
if useobject: