Barry Warsaw pushed to branch master at mailman / Mailman

Commits:
cecb66d2 by Aurélien Bompard at 2016-11-25T11:22:07-05:00
Transmit the moderation reason to hold_message()

The `reason` attribute of `hold_message()` was always None. Serialize
the moderation reasons list and pass it to the function.

This allows the `reason` attribute in REST to actually contain the
moderation reason. It was always blank before.

- - - - -
7142a0ea by Barry Warsaw at 2016-11-25T11:36:35-05:00
Minor cleanup and test added.

- - - - -
055082f2 by Barry Warsaw at 2016-11-25T11:37:27-05:00
Merge branch 'master' of gitlab.com:mailman/mailman

- - - - -


3 changed files:

- src/mailman/chains/hold.py
- src/mailman/chains/tests/test_hold.py
- src/mailman/docs/NEWS.rst


Changes:

=====================================
src/mailman/chains/hold.py
=====================================
--- a/src/mailman/chains/hold.py
+++ b/src/mailman/chains/hold.py
@@ -142,8 +142,9 @@ class HoldChain(TerminalChainBase):
         rule_misses = msgdata.get('rule_misses')
         if rule_misses:
             msg['X-Mailman-Rule-Misses'] = SEMISPACE.join(rule_misses)
+        reasons = msgdata.get('moderation_reasons', ['n/a'])
         # Hold the message by adding it to the list's request database.
-        request_id = hold_message(mlist, msg, msgdata, None)
+        request_id = hold_message(mlist, msg, msgdata, SEMISPACE.join(reasons))
         # Calculate a confirmation token to send to the author of the
         # message.
         pendable = HeldMessagePendable(id=request_id)


=====================================
src/mailman/chains/tests/test_hold.py
=====================================
--- a/src/mailman/chains/tests/test_hold.py
+++ b/src/mailman/chains/tests/test_hold.py
@@ -26,6 +26,7 @@ from mailman.core.chains import process as process_chain
 from mailman.interfaces.autorespond import IAutoResponseSet, Response
 from mailman.interfaces.member import MemberRole
 from mailman.interfaces.messages import IMessageStore
+from mailman.interfaces.requests import IListRequests, RequestType
 from mailman.interfaces.usermanager import IUserManager
 from mailman.testing.helpers import (
     LogFileMark, configuration, get_queue_messages, set_preferred,
@@ -130,6 +131,31 @@ A message body.
         logged = logfile.read()
         self.assertIn('TEST-REASON-1', logged)
         self.assertIn('TEST-REASON-2', logged)
+        # Check the reason passed to hold_message().
+        requests = IListRequests(self._mlist)
+        self.assertEqual(requests.count_of(RequestType.held_message), 1)
+        request = requests.of_type(RequestType.held_message)[0]
+        key, data = requests.get_request(request.id)
+        self.assertEqual(
+            data.get('_mod_reason'), 'TEST-REASON-1; TEST-REASON-2')
+
+    def test_hold_chain_no_reasons_given(self):
+        msg = mfs("""\
+From: a...@example.com
+To: t...@example.com
+Subject: A message
+Message-ID: <ant>
+MIME-Version: 1.0
+
+A message body.
+""")
+        process_chain(self._mlist, msg, {}, start_chain='hold')
+        # No reason was given, so a default is used.
+        requests = IListRequests(self._mlist)
+        self.assertEqual(requests.count_of(RequestType.held_message), 1)
+        request = requests.of_type(RequestType.held_message)[0]
+        key, data = requests.get_request(request.id)
+        self.assertEqual(data.get('_mod_reason'), 'n/a')
 
     def test_hold_chain_charset(self):
         # Issue #144 - UnicodeEncodeError in the hold chain.


=====================================
src/mailman/docs/NEWS.rst
=====================================
--- a/src/mailman/docs/NEWS.rst
+++ b/src/mailman/docs/NEWS.rst
@@ -99,6 +99,8 @@ Bugs
    Bompard.  (Closes: #259)
  * Messages sent to the list's moderators now include the actual recipient
    addresses.  Given by Tom Briles.  (Closes: #68)
+ * Transmit the moderation reason and expose it in the REST API as the
+   ``reason`` attribute.  Given by Aurélien Bompard.
 
 Configuration
 -------------



View it on GitLab: 
https://gitlab.com/mailman/mailman/compare/1677387fae8d62fc930c2c4f481c502e287cc743...055082f2694c84d5dd46ba194224b1b9f51f835f
_______________________________________________
Mailman-checkins mailing list
Mailman-checkins@python.org
Unsubscribe: 
https://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org

Reply via email to