]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/announce.py
add per-suite close_bugs option
[dak.git] / daklib / announce.py
index 8288af9df6b757ecfbab492c90b15903af6e7407..6c0fd374186aed603dfc74e7ebeab90a6e034acb 100644 (file)
@@ -109,7 +109,7 @@ def announce_accept(upload):
     cnf = Config()
     subst = _subst_for_upload(upload)
 
-    accepted_to_real_suite = any(suite.policy_queue in None for suite in upload.suites)
+    accepted_to_real_suite = any(suite.policy_queue is None or suite in upload.from_policy_suites for suite in upload.suites)
 
     suite_names = []
     for suite in upload.suites:
@@ -125,25 +125,32 @@ def announce_accept(upload):
 
     if accepted_to_real_suite and upload.sourceful:
         # senf mail to announce lists and tracking server
-        announce = set(suite.announce or [] for suite in upload.suites if suite.policy_queue is None)
+        announce = set()
+        for suite in upload.suites:
+            if suite.policy_queue is None or suite in upload.from_policy_suites:
+                announce.update(suite.announce or [])
+
         announce_list_address = ", ".join(announce)
 
         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)
 
-        my_subst = subst.copy()
-        my_subst['__ANNOUNCE_LIST_ADDRESS__'] = announce_list_address
+        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'))
-        utils.send_mail(message)
+            message = TemplateSubst(my_subst, os.path.join(cnf['Dir::Templates'], 'process-unchecked.announce'))
+            send_mail(message)
 
-    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(subst, os.path.join(cnf['Dir::Templates'], 'process-unchecked.bug-close'))
+            message = TemplateSubst(my_subst, os.path.join(cnf['Dir::Templates'], 'process-unchecked.bug-close'))
             send_mail(message)
 
 def announce_new(upload):