X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fprocess_upload.py;h=f070566775a720d8a76cf008c1032af84a373349;hb=1380c07106a7209b878ca6e4248e55b23fd1e0c2;hp=74229e2f482b46d5f58ee351886766c6699bd4ca;hpb=cec8f2c1492f4ba27babfcc16bf2ecc5fbf9d9ec;p=dak.git diff --git a/dak/process_upload.py b/dak/process_upload.py index 74229e2f..f0705667 100755 --- a/dak/process_upload.py +++ b/dak/process_upload.py @@ -237,10 +237,15 @@ def subst_for_upload(upload): suite_names.append(suite.suite_name) suite_name = ','.join(suite_names) - maintainer_field = control.get('Changed-By', control.get('Maintainer', cnf['Dinstall::MyEmailAddress'])) - maintainer = fix_maintainer(maintainer_field) - addresses = utils.mail_addresses_for_upload(control.get('Maintainer', cnf['Dinstall::MyEmailAddress']), maintainer_field, changes.primary_fingerprint) + maintainer_field = control.get('Maintainer', cnf['Dinstall::MyEmailAddress']) + changed_by_field = control.get('Changed-By', maintainer_field) + maintainer = fix_maintainer(changed_by_field) + if upload.changes.source is not None: + addresses = utils.mail_addresses_for_upload(maintainer_field, changed_by_field, changes.primary_fingerprint) + else: + addresses = utils.mail_addresses_for_upload(maintainer_field, maintainer_field, changes.primary_fingerprint) + # debian-{devel-,}-changes@lists.debian.org toggles writes access based on this header bcc = 'X-DAK: dak process-upload' if 'Dinstall::Bcc' in cnf: bcc = '{0}\nBcc: {1}'.format(bcc, cnf['Dinstall::Bcc']) @@ -260,15 +265,12 @@ def subst_for_upload(upload): '__DAK_ADDRESS__': cnf['Dinstall::MyEmailAddress'], '__MAINTAINER_FROM__': maintainer[1], '__MAINTAINER_TO__': ", ".join(addresses), - '__MAINTAINER__': maintainer_field, + '__MAINTAINER__': changed_by_field, '__BCC__': bcc, '__BUG_SERVER__': cnf.get('Dinstall::BugServer'), - # TODO: don't use private member - '__FILE_CONTENTS__': upload.changes._signed_file.contents, - - # __REJECT_MESSAGE__ + '__FILE_CONTENTS__': open(upload.changes.path, 'r').read(), } override_maintainer = cnf.get('Dinstall::OverrideMaintainer') @@ -289,8 +291,10 @@ def accept(directory, upload): for suite in upload.final_suites: accepted_to_real_suite = accepted_to_real_suite or suite.policy_queue is None + sourceful_upload = 'source' in upload.changes.architectures + control = upload.changes.changes - if 'source' in upload.changes.architectures and not Options['No-Action']: + if sourceful_upload and not Options['No-Action']: urgency = control.get('Urgency') if urgency not in cnf.value_list('Urgency::Valid'): urgency = cnf['Urgency::Default'] @@ -302,29 +306,28 @@ def accept(directory, upload): utils.send_mail(message) # send mail to announce lists and tracking server - subst = subst_for_upload(upload) - announce = set() - for suite in upload.final_suites: - if suite.policy_queue is not None: - continue - announce.update(suite.announce or []) - announce_address = ", ".join(announce) - - tracking = cnf.get('Dinstall::TrackingServer') - if tracking and 'source' in upload.changes.architectures: - announce_address = '{0}\nBcc: {1}@{2}'.format(announce_address, control['Source'], tracking) + if accepted_to_real_suite and sourceful_upload: + subst = subst_for_upload(upload) + announce = set() + for suite in upload.final_suites: + if suite.policy_queue is not None: + continue + announce.update(suite.announce or []) + announce_address = ", ".join(announce) - subst['__ANNOUNCE_LIST_ADDRESS__'] = announce_address + tracking = cnf.get('Dinstall::TrackingServer') + if tracking and 'source' in upload.changes.architectures: + announce_address = '{0}\nBcc: {1}@{2}'.format(announce_address, control['Source'], tracking) - message = utils.TemplateSubst(subst, os.path.join(cnf['Dir::Templates'], 'process-unchecked.announce')) - utils.send_mail(message) + subst['__ANNOUNCE_LIST_ADDRESS__'] = announce_address - del subst['__ANNOUNCE_LIST_ADDRESS__'] + message = utils.TemplateSubst(subst, os.path.join(cnf['Dir::Templates'], 'process-unchecked.announce')) + utils.send_mail(message) # Only close bugs for uploads that were not redirected to a policy queue. # process-policy will close bugs for those once they are accepted. subst = subst_for_upload(upload) - if accepted_to_real_suite and cnf.find_b('Dinstall::CloseBugs') and upload.changes.source is not None: + if accepted_to_real_suite and cnf.find_b('Dinstall::CloseBugs') and sourceful_upload: for bugnum in upload.changes.closed_bugs: subst['__BUG_NUMBER__'] = str(bugnum) @@ -355,7 +358,7 @@ def accept_to_new(directory, upload): Logger.log(['ACCEPT-TO-NEW', upload.changes.filename]) upload.install_to_new() - # TODO: tag bugs pending, send announcement + # TODO: tag bugs pending subst = subst_for_upload(upload) message = utils.TemplateSubst(subst, os.path.join(cnf['Dir::Templates'], 'process-unchecked.new')) @@ -400,7 +403,6 @@ def real_reject(directory, upload, reason=None, notify=True): fh.write(reason) fh.close() - # TODO: fix if notify: subst = subst_for_upload(upload) subst['__REJECTOR_ADDRESS__'] = cnf['Dinstall::MyEmailAddress'] @@ -496,7 +498,6 @@ def action(directory, upload): elif answer == 'S': processed = False - #raise Exception("FAIL") if not Options['No-Action']: upload.commit() @@ -517,19 +518,6 @@ def process_it(directory, changes, keyrings, session): print "\n{0}\n".format(changes.filename) Logger.log(["Processing changes file", changes.filename]) - cnf = Config() - - # Some defaults in case we can't fully process the .changes file - #u.pkg.changes["maintainer2047"] = cnf["Dinstall::MyEmailAddress"] - #u.pkg.changes["changedby2047"] = cnf["Dinstall::MyEmailAddress"] - - # debian-{devel-,}-changes@lists.debian.org toggles writes access based on this header - bcc = "X-DAK: dak process-upload" - #if cnf.has_key("Dinstall::Bcc"): - # u.Subst["__BCC__"] = bcc + "\nBcc: %s" % (cnf["Dinstall::Bcc"]) - #else: - # u.Subst["__BCC__"] = bcc - with daklib.archive.ArchiveUpload(directory, changes, keyrings) as upload: processed = action(directory, upload) if processed and not Options['No-Action']: