]> git.decadent.org.uk Git - dak.git/commitdiff
Remove function get_binary_components().
authorTorsten Werner <twerner@debian.org>
Thu, 27 Jan 2011 18:40:56 +0000 (19:40 +0100)
committerTorsten Werner <twerner@debian.org>
Thu, 27 Jan 2011 18:40:56 +0000 (19:40 +0100)
Signed-off-by: Torsten Werner <twerner@debian.org>
dak/examine_package.py
daklib/dbconn.py
daklib/queue.py
tests/dbtest_packages.py

index 0d98497ec1fc39797125e33241e33a8de58e4348..38432b11df82052861fb4d83d718f3aeb16c6344 100755 (executable)
@@ -339,7 +339,8 @@ def create_depends_string (suite, depends_tree, session = None):
                 result += " | "
             # doesn't do version lookup yet.
 
-            component = get_component_by_package_suite(d['name'], suite_list, session)
+            component = get_component_by_package_suite(d['name'], suite_list, \
+                session = session)
             if component is not None:
                 adepends = d['name']
                 if d['version'] != '' :
index 0156c8d4ea0fe0f0e2a959d4696132df5a6aa54d..efe2d13761551a7f243c512a81cd779a33b35a0f 100755 (executable)
@@ -475,10 +475,11 @@ def get_suites_binary_in(package, session=None):
 __all__.append('get_suites_binary_in')
 
 @session_wrapper
-def get_component_by_package_suite(package, suite_list, session=None):
+def get_component_by_package_suite(package, suite_list, arch_list=[], session=None):
     '''
     Returns the component name of the newest binary package in suite_list or
-    None if no package is found.
+    None if no package is found. The result can be optionally filtered by a list
+    of architecture names.
 
     @type package: str
     @param package: DBBinary package name to search for
@@ -486,13 +487,19 @@ def get_component_by_package_suite(package, suite_list, session=None):
     @type suite_list: list of str
     @param suite_list: list of suite_name items
 
+    @type arch_list: list of str
+    @param arch_list: optional list of arch_string items that defaults to []
+
     @rtype: str or NoneType
     @return: name of component or None
     '''
 
-    binary = session.query(DBBinary).filter_by(package = package). \
-        join(DBBinary.suites).filter(Suite.suite_name.in_(suite_list)). \
-        order_by(desc(DBBinary.version)).first()
+    q = session.query(DBBinary).filter_by(package = package). \
+        join(DBBinary.suites).filter(Suite.suite_name.in_(suite_list))
+    if len(arch_list) > 0:
+        q = q.join(DBBinary.architecture). \
+            filter(Architecture.arch_string.in_(arch_list))
+    binary = q.order_by(desc(DBBinary.version)).first()
     if binary is None:
         return None
     else:
@@ -500,23 +507,6 @@ def get_component_by_package_suite(package, suite_list, session=None):
 
 __all__.append('get_component_by_package_suite')
 
-@session_wrapper
-def get_binary_components(package, suitename, arch, session=None):
-    # Check for packages that have moved from one component to another
-    query = """SELECT c.name FROM binaries b, bin_associations ba, suite s, location l, component c, architecture a, files f
-    WHERE b.package=:package AND s.suite_name=:suitename
-      AND (a.arch_string = :arch OR a.arch_string = 'all')
-      AND ba.bin = b.id AND ba.suite = s.id AND b.architecture = a.id
-      AND f.location = l.id
-      AND l.component = c.id
-      AND b.file = f.id"""
-
-    vals = {'package': package, 'suitename': suitename, 'arch': arch}
-
-    return session.execute(query, vals)
-
-__all__.append('get_binary_components')
-
 ################################################################################
 
 class BinaryACL(object):
index 24cda1e50fd2684fc7828dfc3a59c88df44dbb7c..bbbf1dfa1fe7949e94491361a30c573d19a692d9 100755 (executable)
@@ -972,9 +972,11 @@ class Upload(object):
 
         # Check for packages that have moved from one component to another
         entry['suite'] = suite
-        res = get_binary_components(self.pkg.files[f]['package'], suite, entry["architecture"], session)
-        if res.rowcount > 0:
-            entry["othercomponents"] = res.fetchone()[0]
+        arch_list = [entry["architecture"], 'all']
+        component = get_component_by_package_suite(self.pkg.files[f]['package'], \
+            [suite], arch_list = arch_list, session = session)
+        if component is not None:
+            entry["othercomponents"] = component
 
     def check_files(self, action=True):
         file_keys = self.pkg.files.keys()
index f4749aca0c8f7a4396ff985568961d4ca97323f8..a7c861be9d2937b142d69dfbc12ca77b0a4791da 100755 (executable)
@@ -544,17 +544,29 @@ class PackageTestCase(DBDakTestCase):
     def test_get_component_by_package_suite(self):
         'test get_component_by_package_suite()'
 
-        result = get_component_by_package_suite('hello', ['sid'], self.session)
+        result = get_component_by_package_suite('hello', ['sid'], \
+            session = self.session)
         self.assertEqual('main', result)
-        result = get_component_by_package_suite('hello', ['hamm'], self.session)
+        result = get_component_by_package_suite('hello', ['hamm'], \
+            session = self.session)
         self.assertEqual(None, result)
-        result = get_component_by_package_suite('foobar', ['sid'], self.session)
+        result = get_component_by_package_suite('foobar', ['sid'], \
+            session = self.session)
         self.assertEqual(None, result)
         # test that the newest version is returend
-        result = get_component_by_package_suite('gnome-hello', ['squeeze'], self.session)
+        result = get_component_by_package_suite('gnome-hello', ['squeeze'], \
+            session = self.session)
         self.assertEqual('main', result)
-        result = get_component_by_package_suite('gnome-hello', ['sid'], self.session)
+        result = get_component_by_package_suite('gnome-hello', ['sid'], \
+            session = self.session)
         self.assertEqual('contrib', result)
+        # test arch_list
+        result = get_component_by_package_suite('hello', ['sid'], \
+            arch_list = ['i386'], session = self.session)
+        self.assertEqual('main', result)
+        result = get_component_by_package_suite('hello', ['sid'], \
+            arch_list = ['amd64'], session = self.session)
+        self.assertEqual(None, result)
 
 if __name__ == '__main__':
     unittest.main()