import apt_pkg, apt_inst
import examine_package
import subprocess
+from sqlalchemy import or_
from daklib.dbconn import *
from daklib.queue import *
################################################################################
-def claimed_overrides(upload, missing, session):
+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:
- return session.query(DBBinary.package, DBSource.source).distinct(). \
+ 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)
- else:
- return None
+ order_by(DBSource.source, DBBinary.package).all()
+ return rows
################################################################################
if not m['valid']:
line = line + ' [!]'
print >>file, line
- claimed = claimed_overrides(upload, missing, session)
- if claimed and claimed.count():
- print '\nCLAIMED OVERRIDES'
- for c in claimed:
- print '%s: %s' % (c.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" \