X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fprocess_policy.py;h=3bde725251c3f6737dbf7bef2e86de7e8b73969c;hb=ee2ca7524ae00bfa5479f59a5caf568f797c4fc1;hp=695751c457de1e2bf46684fb6381fb866ca22b48;hpb=09a1a20566dcf84ca229b4339bd8f8080eb59afd;p=dak.git diff --git a/dak/process_policy.py b/dak/process_policy.py index 695751c4..3bde7252 100755 --- a/dak/process_policy.py +++ b/dak/process_policy.py @@ -45,7 +45,8 @@ from daklib.dak_exceptions import CantOpenError, AlreadyLockedError, CantGetLock from daklib.config import Config from daklib.archive import ArchiveTransaction from daklib.urgencylog import UrgencyLog -from daklib.textutils import fix_maintainer + +import daklib.announce # Globals Options = None @@ -155,24 +156,8 @@ def comment_accept(upload, srcqueue, comments, transaction): if not Options['No-Action']: 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) - - # 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: - for bugnum in upload.changes.closes: - subst['__BUG_NUMBER__'] = bugnum - message = utils.TemplateSubst(subst, os.path.join(cnf['Dir::Templates'], 'process-unchecked.bug-close')) - utils.send_mail(message) - - del subst['__BUG_NUMBER__'] + pu = get_processed_upload(upload) + daklib.announce.announce_accept(upload) # TODO: code duplication. Similar code is in process-upload. # Move .changes to done @@ -189,9 +174,9 @@ def comment_accept(upload, srcqueue, comments, transaction): @try_or_reject def comment_reject(*args): - real_comment_reject(*args) + real_comment_reject(*args, manual=True) -def real_comment_reject(upload, srcqueue, comments, transaction, notify=True): +def real_comment_reject(upload, srcqueue, comments, transaction, notify=True, manual=False): cnf = Config() fs = transaction.fs @@ -230,25 +215,26 @@ def real_comment_reject(upload, srcqueue, comments, transaction, notify=True): ### Send mail notification if notify: - subst = subst_for_upload(upload) - subst['__MANUAL_REJECT_MESSAGE__'] = '' - subst['__REJECT_MESSAGE__'] = comments + rejected_by = None + reason = 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:]) + rejected_by = match.group(1) + reason = '\n'.join(comments.splitlines()[2:]) - message = utils.TemplateSubst(subst, os.path.join(cnf['Dir::Templates'], 'queue.rejected')) - utils.send_mail(message) + pu = get_processed_upload(upload) + daklib.announce.announce_reject(pu, reason, rejected_by) print " REJECT" if not Options["No-Action"]: Logger.log(["Policy Queue REJECT", srcqueue.queue_name, upload.changes.changesname]) + changes = upload.changes remove_upload(upload, transaction) + session.delete(changes) ################################################################################ @@ -268,48 +254,32 @@ def remove_upload(upload, transaction): fs.unlink(os.path.join(queuedir, upload.changes.changesname)) session.delete(upload) - session.delete(changes) session.flush() ################################################################################ -def subst_for_upload(upload): - # TODO: similar code in process-upload - cnf = Config() +def get_processed_upload(upload): + pu = daklib.announce.ProcessedUpload() + + pu.maintainer = upload.changes.maintainer + pu.changed_by = upload.changes.changedby + pu.fingerprint = upload.changes.fingerprint - maintainer_field = upload.changes.changedby or upload.changes.maintainer - addresses = utils.mail_addresses_for_upload(upload.changes.maintainer, maintainer_field, upload.changes.fingerprint) + pu.suites = [] + pu.from_policy_suites = [ upload.target_suite ] changes_path = os.path.join(upload.policy_queue.path, upload.changes.changesname) - changes_contents = open(changes_path, 'r').read() - - bcc = 'X-DAK: dak process-policy' - if 'Dinstall::Bcc' in cnf: - bcc = '{0}\nBcc: {1}'.format(bcc, cnf['Dinstall::Bcc']) - - subst = { - '__DISTRO__': cnf['Dinstall::MyDistribution'], - '__ADMIN_ADDRESS__': cnf['Dinstall::MyAdminAddress'], - - '__CHANGES_FILENAME__': upload.changes.changesname, - '__SOURCE__': upload.changes.source, - '__VERSION__': upload.changes.version, - '__ARCHITECTURE__': upload.changes.architecture, - '__MAINTAINER__': maintainer_field, - '__MAINTAINER_FROM__': fix_maintainer(maintainer_field)[1], - '__MAINTAINER_TO__': ", ".join(addresses), - '__CC__': 'X-DAK-Rejection: manual or automatic', - '__REJECTOR_ADDRESS__': cnf['Dinstall::MyEmailAddress'], - '__BCC__': bcc, - '__BUG_SERVER__': cnf.get('Dinstall::BugServer'), - '__FILE_CONTENTS__': changes_contents, - } - - override_maintainer = cnf.get('Dinstall::OverrideMaintainer') - if override_maintainer: - subst['__MAINTAINER_TO__'] = override_maintainer - - return subst + pu.changes = open(changes_path, 'r').read() + pu.changes_filename = upload.changes.changesname + pu.sourceful = upload.source is not None + pu.source = upload.changes.source + pu.version = upload.changes.version + pu.architecture = upload.changes.architecture + pu.bugs = upload.changes.closes + + pu.program = "process-policy" + + return pu ################################################################################