summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-12-04 15:53:23 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-12-04 15:53:23 +0000
commitaa71eed4e26914cbd2dea19676b7fddef13d938a (patch)
tree2333381e1df764d1e1f6bfcf91aab65630490ee8 /lib/sqlalchemy
parent0ec4e7d6b35685ba4b5d9e2053c765984b4a9189 (diff)
downloadsqlalchemy-aa71eed4e26914cbd2dea19676b7fddef13d938a.tar.gz
fixed replacement of existing column properties with synonyms, [ticket:888]
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/orm/mapper.py3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py
index c69881622..f7bf3f5d9 100644
--- a/lib/sqlalchemy/orm/mapper.py
+++ b/lib/sqlalchemy/orm/mapper.py
@@ -667,6 +667,8 @@ class Mapper(object):
self._columntoproperty[col] = prop
elif isinstance(prop, SynonymProperty):
prop.instrument = getattr(self.class_, key, None)
+ if isinstance(prop.instrument, Mapper._CompileOnAttr):
+ prop.instrument = None
if prop.map_column:
if not key in self.select_table.c:
raise exceptions.ArgumentError("Can't compile synonym '%s': no column on table '%s' named '%s'" % (prop.name, self.select_table.description, key))
@@ -725,7 +727,6 @@ class Mapper(object):
if not self.non_primary and '_class_state' in self.class_.__dict__ and (self.entity_name in self.class_._class_state.mappers):
raise exceptions.ArgumentError("Class '%s' already has a primary mapper defined with entity name '%s'. Use non_primary=True to create a non primary Mapper. clear_mappers() will remove *all* current mappers from all classes." % (self.class_, self.entity_name))
-
def extra_init(class_, oldinit, instance, args, kwargs):
self.compile()
if 'init_instance' in self.extension.methods: