aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mailman_pgp/workflows/subscription.py40
-rw-r--r--src/mailman_pgp/workflows/tests/test_subscription.py6
2 files changed, 42 insertions, 4 deletions
diff --git a/src/mailman_pgp/workflows/subscription.py b/src/mailman_pgp/workflows/subscription.py
index 6b8240c..a7565f3 100644
--- a/src/mailman_pgp/workflows/subscription.py
+++ b/src/mailman_pgp/workflows/subscription.py
@@ -29,12 +29,46 @@ from mailman_pgp.workflows.base import PubkeyMixin
@public
@implementer(ISubscriptionWorkflow)
+class OpenSubscriptionPolicy(SubscriptionBase, VerificationMixin, PubkeyMixin):
+ """"""
+
+ name = 'pgp-policy-open'
+ description = _('An open subscription policy, '
+ 'for a PGP-enabled mailing list.')
+ initial_state = 'prepare'
+ save_attributes = (
+ 'verified',
+ 'pubkey_key',
+ 'pubkey_confirmed',
+ 'address_key',
+ 'subscriber_key',
+ 'user_key',
+ 'token_owner_key',
+ )
+
+ def __init__(self, mlist, subscriber=None, *,
+ pre_verified=False, pubkey=None,
+ pubkey_pre_confirmed=False):
+ SubscriptionBase.__init__(self, mlist, subscriber)
+ VerificationMixin.__init__(self, pre_verified=pre_verified)
+ PubkeyMixin.__init__(self, pubkey=pubkey,
+ pre_confirmed=pubkey_pre_confirmed)
+
+ def _step_prepare(self):
+ self.push('do_subscription')
+ self.push('pubkey_checks')
+ self.push('verification_checks')
+ self.push('sanity_checks')
+
+
+@public
+@implementer(ISubscriptionWorkflow)
class ConfirmSubscriptionPolicy(SubscriptionBase, VerificationMixin,
ConfirmationMixin, PubkeyMixin):
""""""
name = 'pgp-policy-confirm'
- description = _('An subscription policy, for a PGP-enabled mailing list '
+ description = _('A subscription policy, for a PGP-enabled mailing list '
'that requires confirmation.')
initial_state = 'prepare'
save_attributes = (
@@ -72,7 +106,7 @@ class ModerationSubscriptionPolicy(SubscriptionBase, VerificationMixin,
""""""
name = 'pgp-policy-moderate'
- description = _('An subscription policy, for a PGP-enabled mailing list '
+ description = _('A subscription policy, for a PGP-enabled mailing list '
'that requires moderation.')
initial_state = 'prepare'
save_attributes = (
@@ -111,7 +145,7 @@ class ConfirmModerationSubscriptionPolicy(SubscriptionBase, VerificationMixin,
""""""
name = 'pgp-policy-confirm-moderate'
- description = _('An subscription policy, for a PGP-enabled mailing list '
+ description = _('A subscription policy, for a PGP-enabled mailing list '
'that requires moderation after confirmation.')
initial_state = 'prepare'
save_attributes = (
diff --git a/src/mailman_pgp/workflows/tests/test_subscription.py b/src/mailman_pgp/workflows/tests/test_subscription.py
index f8a67f3..9464a83 100644
--- a/src/mailman_pgp/workflows/tests/test_subscription.py
+++ b/src/mailman_pgp/workflows/tests/test_subscription.py
@@ -26,7 +26,7 @@ from mailman_pgp.database import mm_transaction
from mailman_pgp.testing.layers import PGPConfigLayer
from mailman_pgp.workflows.subscription import (
ConfirmModerationSubscriptionPolicy, ConfirmSubscriptionPolicy,
- ModerationSubscriptionPolicy)
+ ModerationSubscriptionPolicy, OpenSubscriptionPolicy)
class TestSubscriptionWorkflows(unittest.TestCase):
@@ -39,6 +39,10 @@ class TestSubscriptionWorkflows(unittest.TestCase):
self.sender = getUtility(IUserManager).create_address(
'rsa-1024b@example.org')
+ def test_open_policy(self):
+ workflow = OpenSubscriptionPolicy(self.mlist, self.sender)
+ next(workflow)
+
def test_confirm_policy(self):
workflow = ConfirmSubscriptionPolicy(self.mlist, self.sender)
next(workflow)