+def get_binary_uploads(suite, base_suite, session):
+ """
+ Returns changelogs for binary uploads where version is newer than base.
+ """
+
+ query = """WITH base as (
+ SELECT s.source, max(b.version) AS version, a.arch_string
+ FROM source s
+ JOIN binaries b ON b.source = s.id
+ JOIN bin_associations ba ON ba.bin = b.id
+ JOIN architecture a ON a.id = b.architecture
+ WHERE ba.suite = (
+ SELECT id
+ FROM suite
+ WHERE suite_name = :base_suite)
+ GROUP BY s.source, a.arch_string),
+ cur_suite as (
+ SELECT s.source, max(b.version) AS version, a.arch_string
+ FROM source s
+ JOIN binaries b ON b.source = s.id
+ JOIN bin_associations ba ON ba.bin = b.id
+ JOIN architecture a ON a.id = b.architecture
+ WHERE ba.suite = (
+ SELECT id
+ FROM suite
+ WHERE suite_name = :suite)
+ GROUP BY s.source, a.arch_string)
+ SELECT DISTINCT c.source, c.version, c.architecture, c.changelog
+ FROM changelogs c
+ JOIN base b on b.source = c.source
+ JOIN cur_suite cs ON cs.source = c.source
+ WHERE c.version > b.version
+ AND c.version <= cs.version
+ AND c.architecture = b.arch_string
+ AND c.architecture = cs.arch_string
+ ORDER BY c.source, c.version DESC, c.architecture"""
+
+ return session.execute(query, {'suite': suite, 'base_suite': base_suite})
+
+def testing_summary(summary, session):
+ """
+ Returns changes introduced in packages entering testing.
+ """
+
+ query = 'SELECT source, changelog FROM changelogs WHERE'
+ fd = open(summary, 'r')
+ for package in fd.read().splitlines():
+ package = package.split()
+ if package[1] != package[2]:
+ if package[1] == '(not_in_testing)':
+ package[1] = 0
+ query += " source = '%s' AND version > '%s' AND version <= '%s'" \
+ % (package[0], package[1], package[2])
+ query += " AND architecture LIKE '%source%' OR"
+ fd.close()
+ query += ' False ORDER BY source, version DESC;'
+
+ return session.execute(query)
+
+def display_changes(uploads, index):
+ prev_upload = None
+ for upload in uploads:
+ if prev_upload and prev_upload != upload[0]:
+ print
+ print upload[index]
+ prev_upload = upload[0]
+