]> git.decadent.org.uk Git - dak.git/blobdiff - dak/process_new.py
Merge branch 'master' of /srv/ftp.debian.org/git/dak
[dak.git] / dak / process_new.py
index 93ebb83d5bf2ea5b810c45ab206d4df71b0c1579..92104435ae1552ab4bd529f640a92e0cd3884e3a 100755 (executable)
@@ -54,6 +54,7 @@ import pwd
 import apt_pkg, apt_inst
 import examine_package
 import subprocess
 import apt_pkg, apt_inst
 import examine_package
 import subprocess
+from sqlalchemy import or_
 
 from daklib.dbconn import *
 from daklib.queue import *
 
 from daklib.dbconn import *
 from daklib.queue import *
@@ -64,7 +65,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 daklib.summarystats import SummaryStats
 from daklib.config import Config
 from daklib.policy import UploadCopy, PolicyQueueUploadHandler
-from sqlalchemy.sql import not_
 
 # Globals
 Options = None
 
 # Globals
 Options = None
@@ -119,18 +119,26 @@ class Priority_Completer:
 
 ################################################################################
 
 
 ################################################################################
 
-def claimed_overrides(upload, missing, session):
-    source = [upload.source.source]
+def takenover_binaries(upload, missing, session):
+    rows = []
     binaries = set([x.package for x in upload.binaries])
     binaries = set([x.package for x in upload.binaries])
-    suites = ('unstable','experimental')
     for m in missing:
         if m['type'] != 'dsc':
             binaries.remove(m['package'])
     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:
+        suite = upload.target_suite.overridesuite or \
+                    upload.target_suite.suite_name
+        suites = [s[0] for s in session.query(Suite.suite_name).filter \
+                                    (or_(Suite.suite_name == suite,
+                                     Suite.overridesuite == suite)).all()]
+        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
 
 ################################################################################
 
 
 ################################################################################
 
@@ -153,11 +161,11 @@ def print_new (upload, missing, indexed, session, file=sys.stdout):
         if not m['valid']:
             line = line + ' [!]'
         print >>file, line
         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:
+        print '\n\nBINARIES TAKEN OVER\n'
+        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" \
     notes = get_new_comments(upload.policy_queue, upload.changes.source)
     for note in notes:
         print "\nAuthor: %s\nVersion: %s\nTimestamp: %s\n\n%s" \