]> git.decadent.org.uk Git - dak.git/blobdiff - dak/process_new.py
upload.source can be null, fall back to upload.changes
[dak.git] / dak / process_new.py
index dc279257f77656bc4c867faf06675285bd7b2e9f..1d136bea36a58473b67ba62c52cc24df2bb5f1cb 100755 (executable)
@@ -54,6 +54,7 @@ import pwd
 import apt_pkg, apt_inst
 import examine_package
 import subprocess
+from sqlalchemy import or_
 
 from daklib.dbconn import *
 from daklib.queue import *
@@ -120,16 +121,22 @@ class Priority_Completer:
 
 def takenover_binaries(upload, missing, session):
     rows = []
+    source = upload.source.source if upload.source else upload.changes.source
     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:
+        source = upload.binaries[0].source.source
+        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). \
+                             filter(DBSource.source != source). \
                              join(DBBinary.suites). \
                              filter(Suite.suite_name.in_(suites)). \
                              order_by(DBSource.source, DBBinary.package).all()
@@ -158,7 +165,7 @@ def print_new (upload, missing, indexed, session, file=sys.stdout):
         print >>file, line
     takenover = takenover_binaries(upload, missing, session)
     if takenover:
-        print '\nBINARIES TAKEN OVER'
+        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)