]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/announce.py
Add by-hash support
[dak.git] / daklib / announce.py
index 1b207b4e7700ac3eeddfd4c2af6014c1661d14cc..e784df03619d05a7346728cd255fee4f7f17498d 100644 (file)
@@ -47,6 +47,8 @@ class ProcessedUpload(object):
     # program
     program = "unknown-program"
 
+    warnings = []
+
 def _subst_for_upload(upload):
     cnf = Config()
 
@@ -79,6 +81,7 @@ def _subst_for_upload(upload):
         '__SOURCE__': upload.source,
         '__VERSION__': upload.version,
         '__ARCHITECTURE__': upload.architecture,
+        '__WARNINGS__': '\n'.join(upload.warnings),
         }
 
     override_maintainer = cnf.get('Dinstall::OverrideMaintainer')
@@ -87,9 +90,13 @@ def _subst_for_upload(upload):
 
     return subst
 
+def _whitelists(upload):
+    return [ s.mail_whitelist for s in upload.suites ]
+
 def announce_reject(upload, reason, rejected_by=None):
     cnf = Config()
     subst = _subst_for_upload(upload)
+    whitelists = _whitelists(upload)
 
     automatic = rejected_by is None
 
@@ -100,14 +107,15 @@ def announce_reject(upload, reason, rejected_by=None):
         subst['__REJECTOR_ADDRESS__'] = rejected_by
 
     if not automatic:
-        subst['__BCC__'] = '{0}\nBcc: {1}'.format(subst['__BCC__'], cnf['Dinstall::MyEmailAddress'])
+        subst['__BCC__'] = '{0}\nBcc: {1}'.format(subst['__BCC__'], subst['__REJECTOR_ADDRESS__'])
 
     message = TemplateSubst(subst, os.path.join(cnf['Dir::Templates'], 'queue.rejected'))
-    send_mail(message)
+    send_mail(message, whitelists=whitelists)
 
 def announce_accept(upload):
     cnf = Config()
     subst = _subst_for_upload(upload)
+    whitelists = _whitelists(upload)
 
     accepted_to_real_suite = any(suite.policy_queue is None or suite in upload.from_policy_suites for suite in upload.suites)
 
@@ -121,7 +129,7 @@ def announce_accept(upload):
     subst['__SUITE__'] = ', '.join(suite_names) or '(none)'
 
     message = TemplateSubst(subst, os.path.join(cnf['Dir::Templates'], 'process-unchecked.accepted'))
-    send_mail(message)
+    send_mail(message, whitelists=whitelists)
 
     if accepted_to_real_suite and upload.sourceful:
         # senf mail to announce lists and tracking server
@@ -134,26 +142,29 @@ def announce_accept(upload):
 
         tracking = cnf.get('Dinstall::TrackingServer')
         if tracking:
-            announce_list_address = "{0}\n{1}@{2}".format(announce_list_address, upload.source, tracking)
+            announce_list_address = "{0}\nBcc: {1}@{2}".format(announce_list_address, upload.source, tracking)
 
         if len(announce_list_address) != 0:
             my_subst = subst.copy()
             my_subst['__ANNOUNCE_LIST_ADDRESS__'] = announce_list_address
 
             message = TemplateSubst(my_subst, os.path.join(cnf['Dir::Templates'], 'process-unchecked.announce'))
-            send_mail(message)
+            send_mail(message, whitelists=whitelists)
 
-    if accepted_to_real_suite and upload.sourceful and cnf.find_b('Dinstall::CloseBugs'):
+    close_bugs_default = cnf.find_b('Dinstall::CloseBugs')
+    close_bugs = any(s.close_bugs if s.close_bugs is not None else close_bugs_default for s in upload.suites)
+    if accepted_to_real_suite and upload.sourceful and close_bugs:
         for bug in upload.bugs:
             my_subst = subst.copy()
             my_subst['__BUG_NUMBER__'] = str(bug)
 
             message = TemplateSubst(my_subst, os.path.join(cnf['Dir::Templates'], 'process-unchecked.bug-close'))
-            send_mail(message)
+            send_mail(message, whitelists=whitelists)
 
 def announce_new(upload):
     cnf = Config()
     subst = _subst_for_upload(upload)
+    whitelists = _whitelists(upload)
 
     message = TemplateSubst(subst, os.path.join(cnf['Dir::Templates'], 'process-unchecked.new'))
-    send_mail(message)
+    send_mail(message, whitelists=whitelists)