[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[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: