Merge branch 'master' of bitbucket.org:zzzeek/sqlalchemy

This commit is contained in:
Mike Bayer
2013-06-17 16:06:50 -04:00
2 changed files with 42 additions and 3 deletions
+6 -2
View File
@@ -158,8 +158,12 @@ def create_version(obj, session, deleted = False):
for prop in obj_mapper.iterate_properties:
if isinstance(prop, RelationshipProperty) and \
attributes.get_history(obj, prop.key).has_changes():
obj_changed = True
break
for p in prop.local_columns:
if p.foreign_keys:
obj_changed = True
break
if obj_changed is True:
break
if not obj_changed and not deleted:
return
+36 -1
View File
@@ -306,7 +306,7 @@ class TestVersioning(TestCase):
id = Column(Integer, primary_key=True)
name = Column(String(50))
related_id = Column(Integer, ForeignKey('somerelated.id'))
related = relationship("SomeRelated")
related = relationship("SomeRelated", backref='classes')
SomeClassHistory = SomeClass.__history_mapper__.class_
@@ -341,3 +341,38 @@ class TestVersioning(TestCase):
assert sc.version == 3
def test_backref_relationship(self):
class SomeRelated(Base, ComparableEntity):
__tablename__ = 'somerelated'
id = Column(Integer, primary_key=True)
name = Column(String(50))
related_id = Column(Integer, ForeignKey('sometable.id'))
related = relationship("SomeClass", backref='related')
class SomeClass(Versioned, Base, ComparableEntity):
__tablename__ = 'sometable'
id = Column(Integer, primary_key=True)
self.create_tables()
sess = Session()
sc = SomeClass()
sess.add(sc)
sess.commit()
assert sc.version == 1
sr = SomeRelated(name='sr', related=sc)
sess.add(sr)
sess.commit()
assert sc.version == 1
sr.name = 'sr2'
sess.commit()
assert sc.version == 1
sess.delete(sr)
sess.commit()