summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/attributes.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-02-17 20:52:07 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2011-02-17 20:52:07 -0500
commit07628e84785b5c0e30bfe974c36c8469e1794336 (patch)
treef6f95a7c75e2f42af63e8039a279dc92781ab833 /lib/sqlalchemy/orm/attributes.py
parent74f26d2279dc730f0a8a8cc9a7824465dd465626 (diff)
downloadsqlalchemy-07628e84785b5c0e30bfe974c36c8469e1794336.tar.gz
- use easy to recognize names for backref events [ticket:2066]
Diffstat (limited to 'lib/sqlalchemy/orm/attributes.py')
-rw-r--r--lib/sqlalchemy/orm/attributes.py20
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/sqlalchemy/orm/attributes.py b/lib/sqlalchemy/orm/attributes.py
index 485210d1c..74e85f065 100644
--- a/lib/sqlalchemy/orm/attributes.py
+++ b/lib/sqlalchemy/orm/attributes.py
@@ -903,7 +903,9 @@ class CollectionAttributeImpl(AttributeImpl):
def backref_listeners(attribute, key, uselist):
"""Apply listeners to synchronize a two-way relationship."""
- def set_(state, child, oldchild, initiator):
+ # use easily recognizable names for stack traces
+
+ def emit_backref_from_scalar_set_event(state, child, oldchild, initiator):
if oldchild is child:
return child
@@ -932,7 +934,7 @@ def backref_listeners(attribute, key, uselist):
passive=PASSIVE_NO_FETCH)
return child
- def append(state, child, initiator):
+ def emit_backref_from_collection_append_event(state, child, initiator):
child_state, child_dict = instance_state(child), \
instance_dict(child)
child_state.manager[key].impl.append(
@@ -943,7 +945,7 @@ def backref_listeners(attribute, key, uselist):
passive=PASSIVE_NO_FETCH)
return child
- def remove(state, child, initiator):
+ def emit_backref_from_collection_remove_event(state, child, initiator):
if child is not None:
child_state, child_dict = instance_state(child),\
instance_dict(child)
@@ -955,11 +957,17 @@ def backref_listeners(attribute, key, uselist):
passive=PASSIVE_NO_FETCH)
if uselist:
- event.listen(attribute, "append", append, retval=True, raw=True)
+ event.listen(attribute, "append",
+ emit_backref_from_collection_append_event,
+ retval=True, raw=True)
else:
- event.listen(attribute, "set", set_, retval=True, raw=True)
+ event.listen(attribute, "set",
+ emit_backref_from_scalar_set_event,
+ retval=True, raw=True)
# TODO: need coverage in test/orm/ of remove event
- event.listen(attribute, "remove", remove, retval=True, raw=True)
+ event.listen(attribute, "remove",
+ emit_backref_from_collection_remove_event,
+ retval=True, raw=True)
class History(tuple):
"""A 3-tuple of added, unchanged and deleted values,