From: Mike Bayer Date: Wed, 27 Jun 2007 20:38:43 +0000 (+0000) Subject: - fix to the "column_prefix" flag so that the mapper does not X-Git-Tag: rel_0_3_9~60 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=01e9fa8f47a79fecb89913f1637fa9ef03ab6e22;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - fix to the "column_prefix" flag so that the mapper does not trip over synonyms (and others) that are named after the column's actual "key" (since, column_prefix means "dont use the key"). --- diff --git a/CHANGES b/CHANGES index 0b17de8d7b..c77f76318c 100644 --- a/CHANGES +++ b/CHANGES @@ -25,6 +25,9 @@ - small fix to eager loading to better work with eager loads to polymorphic mappers that are using a straight "outerjoin" clause + - fix to the "column_prefix" flag so that the mapper does not + trip over synonyms (and others) that are named after the column's actual + "key" (since, column_prefix means "dont use the key"). - sql - fixed grouping of compound selects to give correct results. will break on sqlite in some cases, but those cases were producing incorrect diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 994264cc79..461b9da7ab 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -555,7 +555,7 @@ class Mapper(object): self.columns[column.key] = self.select_table.corresponding_column(column, keys_ok=True, raiseerr=True) column_key = (self.column_prefix or '') + column.key - prop = self.__props.get(column.key, None) + prop = self.__props.get(column_key, None) if prop is None: prop = ColumnProperty(column) self.__props[column_key] = prop diff --git a/test/orm/mapper.py b/test/orm/mapper.py index a8beabf6d3..399b87e330 100644 --- a/test/orm/mapper.py +++ b/test/orm/mapper.py @@ -76,12 +76,16 @@ class MapperTest(MapperSuperTest): assert str(e) == "Invalid cascade option 'fake'" def testcolumnprefix(self): - mapper(User, users, column_prefix='_') + mapper(User, users, column_prefix='_', properties={ + 'user_name':synonym('_user_name') + }) s = create_session() u = s.get(User, 7) assert u._user_name=='jack' assert u._user_id ==7 assert not hasattr(u, 'user_name') + u2 = s.query(User).filter_by(user_name='jack').one() + assert u is u2 def testrefresh(self): mapper(User, users, properties={'addresses':relation(mapper(Address, addresses))})