summaryrefslogtreecommitdiff
path: root/src/mailman/app/subscriptions.py
diff options
context:
space:
mode:
authorJ08nY2017-07-12 18:57:01 +0200
committerJ08nY2017-08-30 13:18:40 +0200
commit50a51a08f067f12b3a2d72a36b4173d9d2249a69 (patch)
treec5c51775a8e13c67dbacb8abdbc33dd148540711 /src/mailman/app/subscriptions.py
parent4cf5a425fe1242d3ceb6a0f68d0655b2ffe05594 (diff)
downloadmailman-50a51a08f067f12b3a2d72a36b4173d9d2249a69.tar.gz
mailman-50a51a08f067f12b3a2d72a36b4173d9d2249a69.tar.zst
mailman-50a51a08f067f12b3a2d72a36b4173d9d2249a69.zip
Diffstat (limited to 'src/mailman/app/subscriptions.py')
-rw-r--r--src/mailman/app/subscriptions.py15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/mailman/app/subscriptions.py b/src/mailman/app/subscriptions.py
index cc28ea859..a0c0c8059 100644
--- a/src/mailman/app/subscriptions.py
+++ b/src/mailman/app/subscriptions.py
@@ -17,6 +17,7 @@
"""Handle subscriptions."""
+from mailman.config import config
from mailman.database.transaction import flush
from mailman.interfaces.listmanager import ListDeletingEvent
from mailman.interfaces.pending import IPendings
@@ -56,11 +57,13 @@ class SubscriptionManager:
if pendable is None:
raise LookupError
workflow_type = pendable.get('type')
- assert workflow_type in (PendableSubscription.PEND_TYPE,
- PendableUnsubscription.PEND_TYPE)
- workflow = (self._mlist.subscription_policy
- if workflow_type == PendableSubscription.PEND_TYPE
- else self._mlist.unsubscription_policy)(self._mlist)
+ if workflow_type in {PendableSubscription.PEND_TYPE,
+ PendableUnsubscription.PEND_TYPE}:
+ workflow = (self._mlist.subscription_policy
+ if workflow_type == PendableSubscription.PEND_TYPE
+ else self._mlist.unsubscription_policy)(self._mlist)
+ else:
+ workflow = config.workflows[workflow_type](self._mlist)
workflow.token = token
workflow.restore()
# In order to just run the whole workflow, all we need to do
@@ -84,6 +87,6 @@ def handle_ListDeletingEvent(event):
return
# Find all the members still associated with the mailing list.
members = getUtility(ISubscriptionService).find_members(
- list_id=event.mailing_list.list_id)
+ list_id=event.mailing_list.list_id)
for member in members:
member.unsubscribe()