From: Mike Bayer Date: Mon, 11 Jun 2012 14:11:14 +0000 (-0400) Subject: - [bug] Fixed identity_key() function which X-Git-Tag: rel_0_7_8~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d7e8adc20de7927bee87d9ae8c582918bc4faa76;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - [bug] Fixed identity_key() function which was not accepting a scalar argument for the identity. [ticket:2508]. --- diff --git a/CHANGES b/CHANGES index fcf71433c8..dd21697f7e 100644 --- a/CHANGES +++ b/CHANGES @@ -28,6 +28,10 @@ CHANGES flush() is no longer deprecated, as some valid use cases have been identified. + - [bug] Fixed identity_key() function which + was not accepting a scalar argument + for the identity. [ticket:2508]. + - engine - [bug] Fixed memory leak in C version of result proxy whereby DBAPIs which don't deliver diff --git a/lib/sqlalchemy/orm/util.py b/lib/sqlalchemy/orm/util.py index 9d81913cb0..9e9c909c3c 100644 --- a/lib/sqlalchemy/orm/util.py +++ b/lib/sqlalchemy/orm/util.py @@ -199,7 +199,7 @@ def identity_key(*args, **kwargs): % ", ".join(kwargs.keys())) mapper = class_mapper(class_) if "ident" in locals(): - return mapper.identity_key_from_primary_key(ident) + return mapper.identity_key_from_primary_key(util.to_list(ident)) return mapper.identity_key_from_row(row) instance = kwargs.pop("instance") if kwargs: diff --git a/test/orm/test_utils.py b/test/orm/test_utils.py index 62a8500bd4..617f1d5384 100644 --- a/test/orm/test_utils.py +++ b/test/orm/test_utils.py @@ -198,6 +198,16 @@ class IdentityKeyTest(_fixtures.FixtureTest): key = util.identity_key(User, ident=[1]) eq_(key, (User, (1,))) + def test_identity_key_scalar(self): + User, users = self.classes.User, self.tables.users + + mapper(User, users) + + key = util.identity_key(User, 1) + eq_(key, (User, (1,))) + key = util.identity_key(User, ident=1) + eq_(key, (User, (1,))) + def test_identity_key_2(self): users, User = self.tables.users, self.classes.User