summaryrefslogtreecommitdiff
path: root/src/mailman/rules
diff options
context:
space:
mode:
authorBarry Warsaw2015-01-04 20:20:33 -0500
committerBarry Warsaw2015-01-04 20:20:33 -0500
commit4a612db8e89afed74173b93f3b64fa567b8417a3 (patch)
tree81a687d113079a25f93279f35c7eee2aa2572510 /src/mailman/rules
parent84af79988a4e916604cba31843778206efb7d1b8 (diff)
parentde181c1a40965a3a7deedd56a034a946f45b6984 (diff)
downloadmailman-4a612db8e89afed74173b93f3b64fa567b8417a3.tar.gz
mailman-4a612db8e89afed74173b93f3b64fa567b8417a3.tar.zst
mailman-4a612db8e89afed74173b93f3b64fa567b8417a3.zip
Merge the Python 3 branch.
Diffstat (limited to 'src/mailman/rules')
-rw-r--r--src/mailman/rules/administrivia.py8
-rw-r--r--src/mailman/rules/any.py6
-rw-r--r--src/mailman/rules/approved.py8
-rw-r--r--src/mailman/rules/emergency.py6
-rw-r--r--src/mailman/rules/implicit_dest.py7
-rw-r--r--src/mailman/rules/loop.py6
-rw-r--r--src/mailman/rules/max_recipients.py6
-rw-r--r--src/mailman/rules/max_size.py6
-rw-r--r--src/mailman/rules/moderation.py8
-rw-r--r--src/mailman/rules/news_moderation.py6
-rw-r--r--src/mailman/rules/no_subject.py6
-rw-r--r--src/mailman/rules/suspicious.py7
-rw-r--r--src/mailman/rules/tests/test_approved.py17
-rw-r--r--src/mailman/rules/tests/test_moderation.py3
-rw-r--r--src/mailman/rules/truth.py6
15 files changed, 25 insertions, 81 deletions
diff --git a/src/mailman/rules/administrivia.py b/src/mailman/rules/administrivia.py
index 3052dcb46..866463d6c 100644
--- a/src/mailman/rules/administrivia.py
+++ b/src/mailman/rules/administrivia.py
@@ -17,20 +17,16 @@
"""The administrivia rule."""
-from __future__ import absolute_import, print_function, unicode_literals
-
-__metaclass__ = type
__all__ = [
'Administrivia',
]
from email.iterators import typed_subpart_iterator
-from zope.interface import implementer
-
from mailman.config import config
from mailman.core.i18n import _
from mailman.interfaces.rules import IRule
+from zope.interface import implementer
# The list of email commands we search for in the Subject header and payload.
@@ -74,7 +70,7 @@ class Administrivia:
# Search only the first text/plain subpart of the message. There's
# really no good way to find email commands in any other content type.
for part in typed_subpart_iterator(msg, 'text', 'plain'):
- payload = part.get_payload(decode=True)
+ payload = part.get_payload()
lines = payload.splitlines()
# Count lines without using enumerate() because blank lines in the
# payload don't count against the maximum examined.
diff --git a/src/mailman/rules/any.py b/src/mailman/rules/any.py
index e5f80fbc4..72f6da873 100644
--- a/src/mailman/rules/any.py
+++ b/src/mailman/rules/any.py
@@ -17,18 +17,14 @@
"""Check if any previous rules have matched."""
-from __future__ import absolute_import, print_function, unicode_literals
-
-__metaclass__ = type
__all__ = [
'Any',
]
-from zope.interface import implementer
-
from mailman.core.i18n import _
from mailman.interfaces.rules import IRule
+from zope.interface import implementer
diff --git a/src/mailman/rules/approved.py b/src/mailman/rules/approved.py
index 3b40d5dc9..5aa66c7df 100644
--- a/src/mailman/rules/approved.py
+++ b/src/mailman/rules/approved.py
@@ -17,9 +17,6 @@
"""Look for moderator pre-approval."""
-from __future__ import absolute_import, print_function, unicode_literals
-
-__metaclass__ = type
__all__ = [
'Approved',
]
@@ -28,11 +25,10 @@ __all__ = [
import re
from email.iterators import typed_subpart_iterator
-from zope.interface import implementer
-
from mailman.config import config
from mailman.core.i18n import _
from mailman.interfaces.rules import IRule
+from zope.interface import implementer
EMPTYSTRING = ''
@@ -113,7 +109,7 @@ class Approved:
# may not work with rtf or whatever else is possible.
pattern = header + ':(\s| )*' + re.escape(password)
for part in typed_subpart_iterator(msg, 'text'):
- payload = part.get_payload(decode=True)
+ payload = part.get_payload()
if payload is not None:
if re.search(pattern, payload):
reset_payload(part, re.sub(pattern, '', payload))
diff --git a/src/mailman/rules/emergency.py b/src/mailman/rules/emergency.py
index ba7abe562..a1addcdb7 100644
--- a/src/mailman/rules/emergency.py
+++ b/src/mailman/rules/emergency.py
@@ -17,18 +17,14 @@
"""The emergency hold rule."""
-from __future__ import absolute_import, print_function, unicode_literals
-
-__metaclass__ = type
__all__ = [
'Emergency',
]
-from zope.interface import implementer
-
from mailman.core.i18n import _
from mailman.interfaces.rules import IRule
+from zope.interface import implementer
diff --git a/src/mailman/rules/implicit_dest.py b/src/mailman/rules/implicit_dest.py
index 0bc229b15..9d3e6d079 100644
--- a/src/mailman/rules/implicit_dest.py
+++ b/src/mailman/rules/implicit_dest.py
@@ -17,21 +17,18 @@
"""The implicit destination rule."""
-from __future__ import absolute_import, print_function, unicode_literals
-
-__metaclass__ = type
__all__ = [
'ImplicitDestination',
]
import re
-from email.utils import getaddresses
-from zope.interface import implementer
+from email.utils import getaddresses
from mailman.core.i18n import _
from mailman.interfaces.mailinglist import IAcceptableAliasSet
from mailman.interfaces.rules import IRule
+from zope.interface import implementer
diff --git a/src/mailman/rules/loop.py b/src/mailman/rules/loop.py
index 145af8b34..30d7dde59 100644
--- a/src/mailman/rules/loop.py
+++ b/src/mailman/rules/loop.py
@@ -17,18 +17,14 @@
"""Look for a posting loop."""
-from __future__ import absolute_import, print_function, unicode_literals
-
-__metaclass__ = type
__all__ = [
'Loop',
]
-from zope.interface import implementer
-
from mailman.core.i18n import _
from mailman.interfaces.rules import IRule
+from zope.interface import implementer
diff --git a/src/mailman/rules/max_recipients.py b/src/mailman/rules/max_recipients.py
index 3b1d4f0c5..485368c0b 100644
--- a/src/mailman/rules/max_recipients.py
+++ b/src/mailman/rules/max_recipients.py
@@ -17,19 +17,15 @@
"""The maximum number of recipients rule."""
-from __future__ import absolute_import, print_function, unicode_literals
-
-__metaclass__ = type
__all__ = [
'MaximumRecipients',
]
from email.utils import getaddresses
-from zope.interface import implementer
-
from mailman.core.i18n import _
from mailman.interfaces.rules import IRule
+from zope.interface import implementer
diff --git a/src/mailman/rules/max_size.py b/src/mailman/rules/max_size.py
index 1e2b46184..4c8b58451 100644
--- a/src/mailman/rules/max_size.py
+++ b/src/mailman/rules/max_size.py
@@ -17,18 +17,14 @@
"""The maximum message size rule."""
-from __future__ import absolute_import, print_function, unicode_literals
-
-__metaclass__ = type
__all__ = [
'MaximumSize',
]
-from zope.interface import implementer
-
from mailman.core.i18n import _
from mailman.interfaces.rules import IRule
+from zope.interface import implementer
diff --git a/src/mailman/rules/moderation.py b/src/mailman/rules/moderation.py
index 46ed242fa..5b79677ed 100644
--- a/src/mailman/rules/moderation.py
+++ b/src/mailman/rules/moderation.py
@@ -17,23 +17,19 @@
"""Membership related rules."""
-from __future__ import absolute_import, print_function, unicode_literals
-
-__metaclass__ = type
__all__ = [
'MemberModeration',
'NonmemberModeration',
]
-from zope.component import getUtility
-from zope.interface import implementer
-
from mailman.core.i18n import _
from mailman.interfaces.action import Action
from mailman.interfaces.member import MemberRole
from mailman.interfaces.rules import IRule
from mailman.interfaces.usermanager import IUserManager
+from zope.component import getUtility
+from zope.interface import implementer
diff --git a/src/mailman/rules/news_moderation.py b/src/mailman/rules/news_moderation.py
index c4372eb80..358368624 100644
--- a/src/mailman/rules/news_moderation.py
+++ b/src/mailman/rules/news_moderation.py
@@ -17,19 +17,15 @@
"""The news moderation rule."""
-from __future__ import absolute_import, print_function, unicode_literals
-
-__metaclass__ = type
__all__ = [
'ModeratedNewsgroup',
]
-from zope.interface import implementer
-
from mailman.core.i18n import _
from mailman.interfaces.nntp import NewsgroupModeration
from mailman.interfaces.rules import IRule
+from zope.interface import implementer
diff --git a/src/mailman/rules/no_subject.py b/src/mailman/rules/no_subject.py
index 8f01f0c15..e66046832 100644
--- a/src/mailman/rules/no_subject.py
+++ b/src/mailman/rules/no_subject.py
@@ -17,18 +17,14 @@
"""The no-Subject header rule."""
-from __future__ import absolute_import, print_function, unicode_literals
-
-__metaclass__ = type
__all__ = [
'NoSubject',
]
-from zope.interface import implementer
-
from mailman.core.i18n import _
from mailman.interfaces.rules import IRule
+from zope.interface import implementer
diff --git a/src/mailman/rules/suspicious.py b/src/mailman/rules/suspicious.py
index 1841ed69e..fbd76b794 100644
--- a/src/mailman/rules/suspicious.py
+++ b/src/mailman/rules/suspicious.py
@@ -17,9 +17,6 @@
"""The historical 'suspicious header' rule."""
-from __future__ import absolute_import, print_function, unicode_literals
-
-__metaclass__ = type
__all__ = [
'SuspiciousHeader',
]
@@ -28,10 +25,10 @@ __all__ = [
import re
import logging
-from zope.interface import implementer
-
from mailman.core.i18n import _
from mailman.interfaces.rules import IRule
+from zope.interface import implementer
+
log = logging.getLogger('mailman.error')
diff --git a/src/mailman/rules/tests/test_approved.py b/src/mailman/rules/tests/test_approved.py
index 9976d4eff..83088da55 100644
--- a/src/mailman/rules/tests/test_approved.py
+++ b/src/mailman/rules/tests/test_approved.py
@@ -17,9 +17,6 @@
"""Test the `approved` handler."""
-from __future__ import absolute_import, print_function, unicode_literals
-
-__metaclass__ = type
__all__ = [
'TestApproved',
'TestApprovedNonASCII',
@@ -36,8 +33,7 @@ from mailman.app.lifecycle import create_list
from mailman.config import config
from mailman.rules import approved
from mailman.testing.helpers import (
- configuration,
- specialized_message_from_string as mfs)
+ configuration, specialized_message_from_string as mfs)
from mailman.testing.layers import ConfigLayer
@@ -433,7 +429,7 @@ class TestPasswordHashMigration(unittest.TestCase):
# hash is chosen after the original password is set. As long as the
# old password still validates, the migration happens automatically.
self._mlist.moderator_password = config.password_context.encrypt(
- b'super secret')
+ 'super secret')
self._rule = approved.Approved()
self._msg = mfs("""\
From: anne@example.com
@@ -450,7 +446,7 @@ A message body.
# hashing algorithm. When the old password is validated, it will be
# automatically migrated to the new hash.
self.assertEqual(self._mlist.moderator_password,
- b'{plaintext}super secret')
+ '{plaintext}super secret')
config_file = os.path.join(config.VAR_DIR, 'passlib.config')
# XXX passlib seems to choose the default hashing scheme even if it is
# deprecated. The default scheme is either specified explicitly, or
@@ -466,14 +462,14 @@ deprecated = roundup_plaintext
self._msg['Approved'] = 'super secret'
result = self._rule.check(self._mlist, self._msg, {})
self.assertTrue(result)
- self.assertEqual(self._mlist.moderator_password, b'super secret')
+ self.assertEqual(self._mlist.moderator_password, 'super secret')
def test_invalid_password_does_not_migrate(self):
# Now that the moderator password is set, change the default password
# hashing algorithm. When the old password is invalid, it will not be
# automatically migrated to the new hash.
self.assertEqual(self._mlist.moderator_password,
- b'{plaintext}super secret')
+ '{plaintext}super secret')
config_file = os.path.join(config.VAR_DIR, 'passlib.config')
# XXX passlib seems to choose the default hashing scheme even if it is
# deprecated. The default scheme is either specified explicitly, or
@@ -490,9 +486,10 @@ deprecated = roundup_plaintext
result = self._rule.check(self._mlist, self._msg, {})
self.assertFalse(result)
self.assertEqual(self._mlist.moderator_password,
- b'{plaintext}super secret')
+ '{plaintext}super secret')
+
class TestApprovedNoTextPlainPart(unittest.TestCase):
"""Test the approved handler with HTML-only messages."""
diff --git a/src/mailman/rules/tests/test_moderation.py b/src/mailman/rules/tests/test_moderation.py
index c0c3cf417..2db4e53cc 100644
--- a/src/mailman/rules/tests/test_moderation.py
+++ b/src/mailman/rules/tests/test_moderation.py
@@ -17,9 +17,6 @@
"""Test the `member-moderation` and `nonmember-moderation` rules."""
-from __future__ import absolute_import, print_function, unicode_literals
-
-__metaclass__ = type
__all__ = [
'TestModeration',
]
diff --git a/src/mailman/rules/truth.py b/src/mailman/rules/truth.py
index d50b5eae4..0bf3345b7 100644
--- a/src/mailman/rules/truth.py
+++ b/src/mailman/rules/truth.py
@@ -17,18 +17,14 @@
"""A rule which always matches."""
-from __future__ import absolute_import, print_function, unicode_literals
-
-__metaclass__ = type
__all__ = [
'Truth',
]
-from zope.interface import implementer
-
from mailman.core.i18n import _
from mailman.interfaces.rules import IRule
+from zope.interface import implementer