X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fqueue.py;h=24cda1e50fd2684fc7828dfc3a59c88df44dbb7c;hb=e52806e0ab9d6eb46644ffbca863818b59d21a15;hp=fa0925470993f005525d448d07a5f0f8b093015f;hpb=f92dee5ccd013494f09f20454eb027d6f8e1d8f7;p=dak.git diff --git a/daklib/queue.py b/daklib/queue.py index fa092547..24cda1e5 100755 --- a/daklib/queue.py +++ b/daklib/queue.py @@ -383,7 +383,7 @@ def get_newest_source(source, session): order_by(desc('source.version')) return q.first() -def get_suite_version(source, session): +def get_suite_version_by_source(source, session): 'returns a list of tuples (suite_name, version) for source package' q = session.query(Suite.suite_name, DBSource.version). \ join(Suite.sources).filter_by(source = source) @@ -398,6 +398,16 @@ def get_source_by_package_and_suite(package, suite_name, session): join(DBSource.binaries).filter_by(package = package). \ join(DBBinary.suites).filter_by(suite_name = suite_name) +def get_suite_version_by_package(package, arch_string, session): + ''' + returns a list of tuples (suite_name, version) for binary package and + arch_string + ''' + return session.query(Suite.suite_name, DBBinary.version). \ + join(Suite.binaries).filter_by(package = package). \ + join(DBBinary.architecture). \ + filter(Architecture.arch_string.in_([arch_string, 'all'])).all() + class Upload(object): """ Everything that has to do with an upload processed. @@ -2504,12 +2514,10 @@ distribution.""" ################################################################################ def check_binary_against_db(self, filename, session): # Ensure version is sane - q = session.query(BinAssociation) - q = q.join(DBBinary).filter(DBBinary.package==self.pkg.files[filename]["package"]) - q = q.join(Architecture).filter(Architecture.arch_string.in_([self.pkg.files[filename]["architecture"], 'all'])) - - self.cross_suite_version_check([ (x.suite.suite_name, x.binary.version) for x in q.all() ], - filename, self.pkg.files[filename]["version"], sourceful=False) + self.cross_suite_version_check( \ + get_suite_version_by_package(self.pkg.files[filename]["package"], \ + self.pkg.files[filename]["architecture"], session), + filename, self.pkg.files[filename]["version"], sourceful=False) # Check for any existing copies of the file q = session.query(DBBinary).filter_by(package=self.pkg.files[filename]["package"]) @@ -2526,8 +2534,9 @@ distribution.""" version = self.pkg.dsc.get("version") # Ensure version is sane - self.cross_suite_version_check(get_suite_version(source, session), - filename, version, sourceful=True) + self.cross_suite_version_check( \ + get_suite_version_by_source(source, session), filename, version, + sourceful=True) ################################################################################ def check_dsc_against_db(self, filename, session):