]> git.decadent.org.uk Git - dak.git/blobdiff - dak/process_new.py
Simplify code to avoid executing the same query twice
[dak.git] / dak / process_new.py
index e3dc5de13e735a35b479335a60841cf18256db97..dc279257f77656bc4c867faf06675285bd7b2e9f 100755 (executable)
@@ -118,6 +118,25 @@ class Priority_Completer:
 
 ################################################################################
 
+def takenover_binaries(upload, missing, session):
+    rows = []
+    binaries = set([x.package for x in upload.binaries])
+    suites = ('unstable','experimental')
+    for m in missing:
+        if m['type'] != 'dsc':
+            binaries.remove(m['package'])
+    if binaries:
+        rows = session.query(DBSource.source, DBBinary.package).distinct(). \
+                             filter(DBBinary.package.in_(binaries)). \
+                             join(DBBinary.source). \
+                             filter(DBSource.source != upload.source.source). \
+                             join(DBBinary.suites). \
+                             filter(Suite.suite_name.in_(suites)). \
+                             order_by(DBSource.source, DBBinary.package).all()
+    return rows
+
+################################################################################
+
 def print_new (upload, missing, indexed, session, file=sys.stdout):
     check_valid(missing, session)
     index = 0
@@ -137,6 +156,11 @@ def print_new (upload, missing, indexed, session, file=sys.stdout):
         if not m['valid']:
             line = line + ' [!]'
         print >>file, line
+    takenover = takenover_binaries(upload, missing, session)
+    if takenover:
+        print '\nBINARIES TAKEN OVER'
+        for t in takenover:
+            print '%s: %s' % (t[0], t[1])
     notes = get_new_comments(upload.policy_queue, upload.changes.source)
     for note in notes:
         print "\nAuthor: %s\nVersion: %s\nTimestamp: %s\n\n%s" \