mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-06-09 17:16:00 -04:00
Merge branch 'master' of bitbucket.org:zzzeek/sqlalchemy
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user