]> git.decadent.org.uk Git - dak.git/blobdiff - dak/process_new.py
Use a better name for function name and output string
[dak.git] / dak / process_new.py
index 93ebb83d5bf2ea5b810c45ab206d4df71b0c1579..ce1f1805049c3e06fbad787dcd18ec525aac5858 100755 (executable)
@@ -64,7 +64,6 @@ from daklib.dak_exceptions import CantOpenError, AlreadyLockedError, CantGetLock
 from daklib.summarystats import SummaryStats
 from daklib.config import Config
 from daklib.policy import UploadCopy, PolicyQueueUploadHandler
-from sqlalchemy.sql import not_
 
 # Globals
 Options = None
@@ -119,18 +118,22 @@ class Priority_Completer:
 
 ################################################################################
 
-def claimed_overrides(upload, missing, session):
-    source = [upload.source.source]
+def takenover_binaries(upload, missing, session):
     binaries = set([x.package for x in upload.binaries])
     suites = ('unstable','experimental')
     for m in missing:
         if m['type'] != 'dsc':
             binaries.remove(m['package'])
-    return session.query(DBBinary).filter(DBBinary.package.in_(binaries)). \
-                         join(DBBinary.source). \
-                         filter(not_(DBSource.source.in_(source))). \
-                         join(DBBinary.suites). \
-                         filter(Suite.suite_name.in_(suites))
+    if binaries:
+        return session.query(DBBinary.package, DBSource.source).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)
+    else:
+        return None
 
 ################################################################################
 
@@ -153,11 +156,11 @@ def print_new (upload, missing, indexed, session, file=sys.stdout):
         if not m['valid']:
             line = line + ' [!]'
         print >>file, line
-    claimed = claimed_overrides(upload, missing, session)
-    if claimed.count():
-        print '\nCLAIMED OVERRIDES'
-        for c in claimed:
-            print '%s:\t%s' % (c.source.source, c.package)
+    takenover = takenover_binaries(upload, missing, session)
+    if takenover and takenover.count():
+        print '\nBINARIES TAKEN OVER'
+        for t in takenover:
+            print '%s: %s' % (t.source, t.package)
     notes = get_new_comments(upload.policy_queue, upload.changes.source)
     for note in notes:
         print "\nAuthor: %s\nVersion: %s\nTimestamp: %s\n\n%s" \