[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[dak/master] indicate who rejected a package



Signed-off-by: Ansgar Burchardt <ansgar@debian.org>
---
 dak/process_policy.py |    9 +++++++++
 daklib/policy.py      |    4 ++++
 2 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/dak/process_policy.py b/dak/process_policy.py
index 3945737..695751c 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
@@ -232,6 +233,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)
 
diff --git a/daklib/policy.py b/daklib/policy.py
index 3a1cb32..eef18a4 100644
--- a/daklib/policy.py
+++ b/daklib/policy.py
@@ -20,6 +20,7 @@ from .config import Config
 from .dbconn import BinaryMetadata, Component, MetadataKey, Override, OverrideType, get_mapped_component
 from .fstransactions import FilesystemTransaction
 from .regexes import re_file_changes, re_file_safe
+import daklib.utils as utils
 
 import errno
 import os
@@ -180,6 +181,8 @@ class PolicyQueueUploadHandler(object):
         @type  reason: str
         @param reason: reason for the rejection
         """
+        cnf = Config()
+
         fn1 = 'REJECT.{0}'.format(self._changes_prefix)
         assert re_file_safe.match(fn1)
 
@@ -187,6 +190,7 @@ class PolicyQueueUploadHandler(object):
         try:
             fh = os.open(fn, os.O_CREAT | os.O_EXCL | os.O_WRONLY)
             os.write(fh, 'NOTOK\n')
+            os.write(fh, 'From: {0} <{1}>\n\n'.format(utils.whoami(), cnf['Dinstall::MyAdminAddress']))
             os.write(fh, reason)
             os.close(fh)
         except OSError as e:
-- 
1.7.2.5



Reply to: