X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fdbconn.py;h=513abb5805f1ba5f67eee0d8effee131e05a318c;hb=bd467abef7c28467728d650468fba7499a281f18;hp=a1c282105f32960eab934e30cdfdf8eada0445e2;hpb=2f142b2bf324aba8fcc74cd1aef5de6fa5b9e49c;p=dak.git diff --git a/daklib/dbconn.py b/daklib/dbconn.py index a1c28210..513abb58 100755 --- a/daklib/dbconn.py +++ b/daklib/dbconn.py @@ -2207,10 +2207,11 @@ def get_sources_from_name(source, version=None, dm_upload_allowed=None, session= __all__.append('get_sources_from_name') +# FIXME: This function fails badly if it finds more than 1 source package. @session_wrapper def get_source_in_suite(source, suite, session=None): """ - Returns list of DBSource objects for a combination of C{source} and C{suite}. + Returns a DBSource object for a combination of C{source} and C{suite}. - B{source} - source package name, eg. I{mailfilter}, I{bbdb}, I{glibc} - B{suite} - a suite name, eg. I{unstable} @@ -2226,12 +2227,11 @@ def get_source_in_suite(source, suite, session=None): """ - q = session.query(SrcAssociation) - q = q.join('source').filter_by(source=source) - q = q.join('suite').filter_by(suite_name=suite) + q = session.query(DBSource).filter_by(source = source). \ + filter(DBSource.suites.any(Suite.suite_name == suite)) try: - return q.one().source + return q.one() except NoResultFound: return None @@ -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,