aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2017-08-04 00:31:13 +0200
committerJ08nY2017-08-04 00:31:13 +0200
commit4e4f91d64e32ccd601cb86fbb2a30bf3db3acf24 (patch)
treef7314a0990159d0c0c7123620083d648fc828744
parentd615ae7d93356ba9dfda0348db6a011ad1d24bdc (diff)
downloadmailman-pgp-4e4f91d64e32ccd601cb86fbb2a30bf3db3acf24.tar.gz
mailman-pgp-4e4f91d64e32ccd601cb86fbb2a30bf3db3acf24.tar.zst
mailman-pgp-4e4f91d64e32ccd601cb86fbb2a30bf3db3acf24.zip
-rw-r--r--src/mailman_pgp/chains/default.py1
-rw-r--r--src/mailman_pgp/mta/deliver.py2
-rw-r--r--src/mailman_pgp/mta/tests/test_deliver.py6
-rw-r--r--src/mailman_pgp/rules/mark.py36
4 files changed, 42 insertions, 3 deletions
diff --git a/src/mailman_pgp/chains/default.py b/src/mailman_pgp/chains/default.py
index 314d8b8..7806a6e 100644
--- a/src/mailman_pgp/chains/default.py
+++ b/src/mailman_pgp/chains/default.py
@@ -35,6 +35,7 @@ class PGPChain:
_link_descriptions = (
('pgp-encryption', LinkAction.jump, 'moderation'),
('pgp-signature', LinkAction.jump, 'moderation'),
+ ('pgp-mark', LinkAction.defer, None),
('truth', LinkAction.jump, 'default-posting-chain')
)
diff --git a/src/mailman_pgp/mta/deliver.py b/src/mailman_pgp/mta/deliver.py
index 050a740..ef4713a 100644
--- a/src/mailman_pgp/mta/deliver.py
+++ b/src/mailman_pgp/mta/deliver.py
@@ -50,7 +50,7 @@ def deliver(mlist, msg, msgdata):
bulk_agent = BulkDelivery
pgp_list = PGPMailingList.for_list(mlist)
- if pgp_list:
+ if pgp_list and msgdata.get('pgp_is_posting', False):
personalized_agent = PGPPersonalizedDelivery
bulk_agent = PGPBulkDelivery
diff --git a/src/mailman_pgp/mta/tests/test_deliver.py b/src/mailman_pgp/mta/tests/test_deliver.py
index 3b0594f..3406d02 100644
--- a/src/mailman_pgp/mta/tests/test_deliver.py
+++ b/src/mailman_pgp/mta/tests/test_deliver.py
@@ -72,13 +72,15 @@ Some text.
""")
def test_deliver(self):
- msgdata = dict(recipients=['anne@example.org', 'bart@example.org'])
+ msgdata = dict(recipients=['anne@example.org', 'bart@example.org'],
+ pgp_is_posting=True)
deliver(self.mlist, self.msg, msgdata)
def test_deliver_no_key(self):
with transaction():
self.pgp_anne.key = None
- msgdata = dict(recipients=['anne@example.org', 'bart@example.org'])
+ msgdata = dict(recipients=['anne@example.org', 'bart@example.org'],
+ pgp_is_posting=True)
with self.assertRaises(SomeRecipientsFailed) as err:
deliver(self.mlist, self.msg, msgdata)
self.assertEqual(err.exception.temporary_failures,
diff --git a/src/mailman_pgp/rules/mark.py b/src/mailman_pgp/rules/mark.py
new file mode 100644
index 0000000..eda9ecf
--- /dev/null
+++ b/src/mailman_pgp/rules/mark.py
@@ -0,0 +1,36 @@
+# Copyright (C) 2017 Jan Jancar
+#
+# This file is a part of the Mailman PGP plugin.
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program. If not, see <http://www.gnu.org/licenses/>.
+
+""""""
+from mailman.interfaces.rules import IRule
+from public import public
+from zope.interface import implementer
+
+
+@public
+@implementer(IRule)
+class MarkPosting:
+ """"""
+
+ name = 'pgp-mark'
+ description = ''
+ record = False
+
+ def check(self, mlist, msg, msgdata):
+ """See `IRule`."""
+ msgdata['pgp_is_posting'] = True
+ return False