]> git.decadent.org.uk Git - dak.git/blob - daklib/cruft.py
Merge branch 'master' into dbtests
[dak.git] / daklib / cruft.py
1 from daklib.dbconn import *
2
3 from sqlalchemy import func
4
5 def newer_version(lowersuite_name, highersuite_name, session):
6     '''
7     Finds newer versions in lowersuite_name than in highersuite_name. Returns a
8     list of tuples (source, higherversion, lowerversion) where higherversion is
9     the newest version from highersuite_name and lowerversion is the newest
10     version from lowersuite_name.
11     '''
12
13     lowersuite = get_suite(lowersuite_name, session)
14     highersuite = get_suite(highersuite_name, session)
15
16     query = session.query(DBSource.source, func.max(DBSource.version)). \
17         with_parent(highersuite).group_by(DBSource.source)
18
19     list = []
20     for (source, higherversion) in query:
21         lowerversion = session.query(func.max(DBSource.version)). \
22             filter_by(source = source).filter(DBSource.version > higherversion). \
23             with_parent(lowersuite).group_by(DBSource.source).scalar()
24         if lowerversion is not None:
25             list.append((source, higherversion, lowerversion))
26     return list
27