From aa71eed4e26914cbd2dea19676b7fddef13d938a Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 4 Dec 2007 15:53:23 +0000 Subject: fixed replacement of existing column properties with synonyms, [ticket:888] --- lib/sqlalchemy/orm/mapper.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib/sqlalchemy') 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: -- cgit v1.2.1