[dak/master] Make a bidirectional relation DBSource - PoolFile.
Signed-off-by: Torsten Werner <twerner@debian.org>
---
daklib/dbconn.py | 2 +-
tests/dbtest_packages.py | 15 +++++++++++++--
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/daklib/dbconn.py b/daklib/dbconn.py
index a1c2821..6d8d3bd 100755
--- a/daklib/dbconn.py
+++ b/daklib/dbconn.py
@@ -3041,7 +3041,7 @@ class DBConn(object):
version = self.tbl_source.c.version,
maintainer_id = self.tbl_source.c.maintainer,
poolfile_id = self.tbl_source.c.file,
- poolfile = relation(PoolFile),
+ poolfile = relation(PoolFile, backref=backref('source', uselist = False)),
fingerprint_id = self.tbl_source.c.sig_fpr,
fingerprint = relation(Fingerprint),
changedby_id = self.tbl_source.c.changedby,
diff --git a/tests/dbtest_packages.py b/tests/dbtest_packages.py
index 249ad81..de5b736 100755
--- a/tests/dbtest_packages.py
+++ b/tests/dbtest_packages.py
@@ -180,6 +180,7 @@ class PackageTestCase(DBDakTestCase):
def setup_sources(self):
'create a DBSource object; but it cannot be stored in the DB yet'
+ self.setup_maintainers()
self.setup_poolfiles()
self.source = DBSource(source = 'hello', version = '2.2-2', \
maintainer = self.maintainer['maintainer'], \
@@ -193,7 +194,7 @@ class PackageTestCase(DBDakTestCase):
TODO: add relations to changes_pending_source
'''
- self.setup_maintainers()
+ self.setup_sources()
maintainer = self.maintainer['maintainer']
self.assertEqual(maintainer,
self.session.query(Maintainer).get(maintainer.maintainer_id))
@@ -203,7 +204,6 @@ class PackageTestCase(DBDakTestCase):
lazyguy = self.maintainer['lazyguy']
self.assertEqual(lazyguy,
self.session.query(Maintainer).get(lazyguy.maintainer_id))
- self.setup_sources()
self.assertEqual(maintainer.maintains_sources, [self.source])
self.assertEqual(maintainer.changed_sources, [])
self.assertEqual(uploader.maintains_sources, [])
@@ -211,6 +211,17 @@ class PackageTestCase(DBDakTestCase):
self.assertEqual(lazyguy.maintains_sources, [])
self.assertEqual(lazyguy.changed_sources, [])
+ def test_sources(self):
+ 'test relation between DBSource and PoolFile'
+
+ self.setup_sources()
+ poolfile_hello = self.session.query(DBSource)[0].poolfile
+ self.assertEqual(self.file['hello'], poolfile_hello)
+ self.assertEqual(self.source, poolfile_hello.source)
+ poolfile_sl = self.session.query(PoolFile). \
+ filter(PoolFile.filename.like('%/sl/%'))[0]
+ self.assertEqual(None, poolfile_sl.source)
+
if __name__ == '__main__':
unittest.main()
--
1.5.6.5
Reply to: