summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/properties.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2012-10-25 20:28:03 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2012-10-25 20:28:03 -0400
commit7f043a9666eecdecc54fe779ffdd50a7d5bb0086 (patch)
tree945a98439e89265422632d20289babbe3079f7b1 /lib/sqlalchemy/orm/properties.py
parent519c705317e801d714bd05a28f8b2786695d81cc (diff)
downloadsqlalchemy-7f043a9666eecdecc54fe779ffdd50a7d5bb0086.tar.gz
- some naming changes on PropComparator, Comparator:
1. all Comparators now have "parent" which is always the parent mapper or AliasedClass instance 2. only RelationshipProperty.Comparator has "mapper" now, which is the target mapper 3. The names "parententity" and "parentmapper" are underscored also improved the message with the "neither comparator nor instruentedattribute...." to include the classname + attribute name
Diffstat (limited to 'lib/sqlalchemy/orm/properties.py')
-rw-r--r--lib/sqlalchemy/orm/properties.py37
1 files changed, 30 insertions, 7 deletions
diff --git a/lib/sqlalchemy/orm/properties.py b/lib/sqlalchemy/orm/properties.py
index 048b4fad3..a0abb2743 100644
--- a/lib/sqlalchemy/orm/properties.py
+++ b/lib/sqlalchemy/orm/properties.py
@@ -189,8 +189,8 @@ class ColumnProperty(StrategizedProperty):
return self.adapter(self.prop.columns[0])
else:
return self.prop.columns[0]._annotate({
- "parententity": self.mapper,
- "parentmapper": self.mapper})
+ "parententity": self._parentmapper,
+ "parentmapper": self._parentmapper})
def __getattr__(self, key):
"""proxy attribute access down to the mapped column.
@@ -352,13 +352,13 @@ class RelationshipProperty(StrategizedProperty):
_of_type = None
- def __init__(self, prop, mapper, of_type=None, adapter=None):
+ def __init__(self, prop, parentmapper, of_type=None, adapter=None):
"""Construction of :class:`.RelationshipProperty.Comparator`
is internal to the ORM's attribute mechanics.
"""
self.prop = prop
- self.mapper = mapper
+ self._parentmapper = parentmapper
self.adapter = adapter
if of_type:
self._of_type = of_type
@@ -370,14 +370,37 @@ class RelationshipProperty(StrategizedProperty):
"""
- return self.__class__(self.property, self.mapper,
+ return self.__class__(self.property, self._parentmapper,
getattr(self, '_of_type', None),
adapter)
@util.memoized_property
- def parententity(self):
+ def mapper(self):
+ """The target :class:`.Mapper` referred to by this
+ :class:`.RelationshipProperty.Comparator.
+
+ This is the "target" or "remote" side of the
+ :func:`.relationship`.
+
+ """
+ return self.property.mapper
+
+ @util.memoized_property
+ def parent(self):
+ """The parent :class:`.Mapper` or :class:`.AliasedClass`
+ referred to by this
+ :class:`.RelationshipProperty.Comparator.
+
+ This is the "parent" or "local" side of the
+ :func:`.relationship`.
+
+ """
return self.property.parent
+ @util.memoized_property
+ def _parententity(self):
+ return self.parent
+
def _source_selectable(self):
elem = self.property.parent._with_polymorphic_selectable
if self.adapter:
@@ -412,7 +435,7 @@ class RelationshipProperty(StrategizedProperty):
"""
return RelationshipProperty.Comparator(
self.property,
- self.mapper,
+ self._parentmapper,
cls, adapter=self.adapter)
def in_(self, other):