]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/cruft.py
Refactor do_newer_version() in cruft_report.py.
[dak.git] / daklib / cruft.py
diff --git a/daklib/cruft.py b/daklib/cruft.py
new file mode 100644 (file)
index 0000000..0fc40f3
--- /dev/null
@@ -0,0 +1,27 @@
+from daklib.dbconn import *
+
+from sqlalchemy import func
+
+def newer_version(lowersuite_name, highersuite_name, session):
+    '''
+    Finds newer versions in lowersuite_name than in highersuite_name. Returns a
+    list of tuples (source, higherversion, lowerversion) where higherversion is
+    the newest version from highersuite_name and lowerversion is the newest
+    version from lowersuite_name.
+    '''
+
+    lowersuite = get_suite(lowersuite_name, session)
+    highersuite = get_suite(highersuite_name, session)
+
+    query = session.query(DBSource.source, func.max(DBSource.version)). \
+        with_parent(highersuite).group_by(DBSource.source)
+
+    list = []
+    for (source, higherversion) in query:
+        lowerversion = session.query(func.max(DBSource.version)). \
+            filter_by(source = source).filter(DBSource.version > higherversion). \
+            with_parent(lowersuite).group_by(DBSource.source).scalar()
+        if lowerversion is not None:
+            list.append((source, higherversion, lowerversion))
+    return list
+