From a0079b6831aef2b604859f89f07772e65c04d5d4 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 6 Mar 2006 02:27:13 +0000 Subject: added new 'polymorphic' example. still trying to understand it :) . fixes to relation to enable it to locate "direction" more consistently with inheritance relationships more tweaks to parenthesizing subqueries, unions, etc. --- lib/sqlalchemy/mapping/mapper.py | 1 - lib/sqlalchemy/mapping/properties.py | 7 ++++--- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'lib/sqlalchemy/mapping') diff --git a/lib/sqlalchemy/mapping/mapper.py b/lib/sqlalchemy/mapping/mapper.py index 6a7eb9659..7b4595fb0 100644 --- a/lib/sqlalchemy/mapping/mapper.py +++ b/lib/sqlalchemy/mapping/mapper.py @@ -952,7 +952,6 @@ def object_mapper(object): def class_mapper(class_): """given a class, returns the primary Mapper associated with the class.""" - return mapper_registry[class_] try: return mapper_registry[class_] except KeyError: diff --git a/lib/sqlalchemy/mapping/properties.py b/lib/sqlalchemy/mapping/properties.py index 023e44bf7..0f83568ed 100644 --- a/lib/sqlalchemy/mapping/properties.py +++ b/lib/sqlalchemy/mapping/properties.py @@ -229,7 +229,8 @@ class PropertyLoader(MapperProperty): def _get_direction(self): """determines our 'direction', i.e. do we represent one to many, many to many, etc.""" -# print self.key, repr(self.parent.table.name), repr(self.parent.primarytable.name), repr(self.foreignkey.table.name) + #print self.key, repr(self.parent.table.name), repr(self.parent.primarytable.name), repr(self.foreignkey.table.name), repr(self.target), repr(self.foreigntable.name) + if self.parent.table is self.target: if self.foreignkey.primary_key: return PropertyLoader.MANYTOONE @@ -237,9 +238,9 @@ class PropertyLoader(MapperProperty): return PropertyLoader.ONETOMANY elif self.secondaryjoin is not None: return PropertyLoader.MANYTOMANY - elif self.foreigntable == self.target: + elif self.foreigntable is self.target or self.foreigntable in self.mapper.tables: return PropertyLoader.ONETOMANY - elif self.foreigntable == self.parent.table: + elif self.foreigntable is self.parent.table or self.foreigntable in self.parent.tables: return PropertyLoader.MANYTOONE else: raise ArgumentError("Cant determine relation direction") -- cgit v1.2.1