X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=dak%2Fprocess_policy.py;h=5992cdd558b15853f02299d1fc677833382e9b6a;hb=1faa56010afa2f91f1c9ccb0a49789d3d3b811c7;hp=3945737f665cf44225f1b9433101f72ead410609;hpb=1059d7932685b236b7f734d00fa840d8294141be;p=dak.git diff --git a/dak/process_policy.py b/dak/process_policy.py index 3945737f..5992cdd5 100755 --- a/dak/process_policy.py +++ b/dak/process_policy.py @@ -33,6 +33,7 @@ import os import datetime +import re import sys import traceback import apt_pkg @@ -155,14 +156,15 @@ def comment_accept(upload, srcqueue, comments, transaction): Logger.log(["Policy Queue ACCEPT", srcqueue.queue_name, changesname]) # Send announcement - subst = subst_for_upload(upload) - announce = ", ".join(upload.target_suite.announce or []) - tracking = cnf.get('Dinstall::TrackingServer') - if tracking and upload.source is not None: - announce = '{0}\nBcc: {1}@{2}'.format(announce, upload.changes.source, tracking) - subst['__ANNOUNCE_LIST_ADDRESS__'] = announce - message = utils.TemplateSubst(subst, os.path.join(cnf['Dir::Templates'], 'process-unchecked.announce')) - utils.send_mail(message) + if upload.source is not None: + subst = subst_for_upload(upload) + announce = ", ".join(upload.target_suite.announce or []) + tracking = cnf.get('Dinstall::TrackingServer') + if tracking and upload.source is not None: + announce = '{0}\nBcc: {1}@{2}'.format(announce, upload.changes.source, tracking) + subst['__ANNOUNCE_LIST_ADDRESS__'] = announce + message = utils.TemplateSubst(subst, os.path.join(cnf['Dir::Templates'], 'process-unchecked.announce')) + utils.send_mail(message) # TODO: code duplication. Similar code is in process-upload. if cnf.find_b('Dinstall::CloseBugs') and upload.changes.closes is not None and upload.source is not None: @@ -232,6 +234,14 @@ def real_comment_reject(upload, srcqueue, comments, transaction, notify=True): subst = subst_for_upload(upload) subst['__MANUAL_REJECT_MESSAGE__'] = '' subst['__REJECT_MESSAGE__'] = comments + + # Try to use From: from comment file if there is one. + # This is not very elegant... + match = re.match(r"\AFrom: ([^\n]+)\n\n", comments) + if match: + subst['__REJECTOR_ADDRESS__'] = match.group(1) + subst['__REJECT_MESSAGE__'] = '\n'.join(comments.splitlines()[2:]) + message = utils.TemplateSubst(subst, os.path.join(cnf['Dir::Templates'], 'queue.rejected')) utils.send_mail(message) @@ -269,7 +279,10 @@ def subst_for_upload(upload): cnf = Config() maintainer_field = upload.changes.changedby or upload.changes.maintainer - addresses = utils.mail_addresses_for_upload(upload.changes.maintainer, maintainer_field, upload.changes.fingerprint) + if upload.source is not None: + addresses = utils.mail_addresses_for_upload(upload.changes.maintainer, maintainer_field, upload.changes.fingerprint) + else: + addresses = utils.mail_addresses_for_upload(upload.changes.maintainer, upload.changes.maintainer, upload.changes.fingerprint) changes_path = os.path.join(upload.policy_queue.path, upload.changes.changesname) changes_contents = open(changes_path, 'r').read()