From: Torsten Werner Date: Thu, 27 Jan 2011 18:40:56 +0000 (+0100) Subject: Remove function get_binary_components(). X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=a16a089fb3f3dc6b03f5d1f36890bad1d63bd78c;p=dak.git Remove function get_binary_components(). Signed-off-by: Torsten Werner --- diff --git a/dak/examine_package.py b/dak/examine_package.py index 0d98497e..38432b11 100755 --- a/dak/examine_package.py +++ b/dak/examine_package.py @@ -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'] != '' : diff --git a/daklib/dbconn.py b/daklib/dbconn.py index 0156c8d4..efe2d137 100755 --- a/daklib/dbconn.py +++ b/daklib/dbconn.py @@ -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): diff --git a/daklib/queue.py b/daklib/queue.py index 24cda1e5..bbbf1dfa 100755 --- a/daklib/queue.py +++ b/daklib/queue.py @@ -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() diff --git a/tests/dbtest_packages.py b/tests/dbtest_packages.py index f4749aca..a7c861be 100755 --- a/tests/dbtest_packages.py +++ b/tests/dbtest_packages.py @@ -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()