diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-07-30 11:41:53 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-07-30 11:41:53 -0400 |
| commit | a45da117889edba7ec0906d3af3fff7d83e5373a (patch) | |
| tree | 07acef09730963088a7775b513be96ade965d551 /lib/sqlalchemy | |
| parent | 086ae95614b4848c486eeb7acf2bc1b03b2a6a37 (diff) | |
| download | sqlalchemy-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.py | 15 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/strategies.py | 4 |
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: |
