From eddbcf479421e234100ee7cd9b425b9c057b04ee Mon Sep 17 00:00:00 2001 From: J08nY Date: Thu, 6 Jul 2017 20:01:54 +0200 Subject: Remove [Un]SubscriptionConfirmationNeeded events, send msg in workflows. --- src/mailman/app/events.py | 2 -- src/mailman/app/subscriptions.py | 42 +-------------------------------- src/mailman/interfaces/subscriptions.py | 27 --------------------- src/mailman/workflows/common.py | 33 ++++++++++++++++++-------- 4 files changed, 24 insertions(+), 80 deletions(-) diff --git a/src/mailman/app/events.py b/src/mailman/app/events.py index bf7f2ece8..a3fca30a8 100644 --- a/src/mailman/app/events.py +++ b/src/mailman/app/events.py @@ -38,7 +38,5 @@ def initialize(): passwords.handle_ConfigurationUpdatedEvent, style_manager.handle_ConfigurationUpdatedEvent, subscriptions.handle_ListDeletingEvent, - subscriptions.handle_SubscriptionConfirmationNeededEvent, - subscriptions.handle_UnsubscriptionConfirmationNeededEvent, switchboard.handle_ConfigurationUpdatedEvent, ]) diff --git a/src/mailman/app/subscriptions.py b/src/mailman/app/subscriptions.py index e1c1d8993..cc28ea859 100644 --- a/src/mailman/app/subscriptions.py +++ b/src/mailman/app/subscriptions.py @@ -18,16 +18,11 @@ """Handle subscriptions.""" from mailman.database.transaction import flush -from mailman.email.message import UserNotification from mailman.interfaces.listmanager import ListDeletingEvent from mailman.interfaces.pending import IPendings from mailman.interfaces.subscriptions import ( - ISubscriptionManager, ISubscriptionService, - SubscriptionConfirmationNeededEvent, - UnsubscriptionConfirmationNeededEvent) -from mailman.interfaces.template import ITemplateLoader + ISubscriptionManager, ISubscriptionService) from mailman.interfaces.workflows import IWorkflowStateManager -from mailman.utilities.string import expand from mailman.workflows.common import (PendableSubscription, PendableUnsubscription) from public import public @@ -81,41 +76,6 @@ class SubscriptionManager: getUtility(IWorkflowStateManager).discard(token) -def _handle_confirmation_needed_events(event, template_name): - subject = 'confirm {}'.format(event.token) - confirm_address = event.mlist.confirm_address(event.token) - email_address = event.email - # Send a verification email to the address. - template = getUtility(ITemplateLoader).get(template_name, event.mlist) - text = expand(template, event.mlist, dict( - token=event.token, - subject=subject, - confirm_email=confirm_address, - user_email=email_address, - # For backward compatibility. - confirm_address=confirm_address, - email_address=email_address, - domain_name=event.mlist.domain.mail_host, - contact_address=event.mlist.owner_address, - )) - msg = UserNotification(email_address, confirm_address, subject, text) - msg.send(event.mlist, add_precedence=False) - - -@public -def handle_SubscriptionConfirmationNeededEvent(event): - if not isinstance(event, SubscriptionConfirmationNeededEvent): - return - _handle_confirmation_needed_events(event, 'list:user:action:subscribe') - - -@public -def handle_UnsubscriptionConfirmationNeededEvent(event): - if not isinstance(event, UnsubscriptionConfirmationNeededEvent): - return - _handle_confirmation_needed_events(event, 'list:user:action:unsubscribe') - - @public def handle_ListDeletingEvent(event): """Delete a mailing list's members when the list is being deleted.""" diff --git a/src/mailman/interfaces/subscriptions.py b/src/mailman/interfaces/subscriptions.py index 40c66cb1f..4a82da096 100644 --- a/src/mailman/interfaces/subscriptions.py +++ b/src/mailman/interfaces/subscriptions.py @@ -77,33 +77,6 @@ class TokenOwner(Enum): moderator = 2 -@public -class SubscriptionConfirmationNeededEvent: - """Triggered when a subscription needs confirmation. - - Addresses must be verified before they can receive messages or post - to mailing list. The confirmation message is sent to the user when - this event is triggered. - """ - def __init__(self, mlist, token, email): - self.mlist = mlist - self.token = token - self.email = email - - -@public -class UnsubscriptionConfirmationNeededEvent: - """Triggered when an unsubscription request needs confirmation. - - The confirmation message is sent to the user when this event is - triggered. - """ - def __init__(self, mlist, token, email): - self.mlist = mlist - self.token = token - self.email = email - - @public class ISubscriptionService(Interface): """General subscription services.""" diff --git a/src/mailman/workflows/common.py b/src/mailman/workflows/common.py index 8593d0997..41733f6e5 100644 --- a/src/mailman/workflows/common.py +++ b/src/mailman/workflows/common.py @@ -33,9 +33,8 @@ from mailman.interfaces.member import (AlreadySubscribedError, MemberRole, MembershipIsBannedError, NotAMemberError) from mailman.interfaces.pending import IPendable, IPendings -from mailman.interfaces.subscriptions import ( - SubscriptionConfirmationNeededEvent, SubscriptionPendingError, TokenOwner, - UnsubscriptionConfirmationNeededEvent) +from mailman.interfaces.subscriptions import (SubscriptionPendingError, + TokenOwner) from mailman.interfaces.template import ITemplateLoader from mailman.interfaces.user import IUser from mailman.interfaces.usermanager import IUserManager @@ -45,7 +44,6 @@ from mailman.utilities.datetime import now from mailman.utilities.string import expand, wrap from mailman.workflows.base import Workflow from zope.component import getUtility -from zope.event import notify from zope.interface import implementer from zope.interface.exceptions import DoesNotImplement @@ -266,13 +264,28 @@ class RequestMixin: self.push('do_confirm_verify') self.save() if self._workflow is WhichWorkflow.subscription: - event_class = SubscriptionConfirmationNeededEvent + template_name = 'list:user:action:subscribe' else: - event_class = UnsubscriptionConfirmationNeededEvent - - # Triggering this event causes the confirmation message to be sent. - notify(event_class( - self.mlist, self.token, self.address.email)) + template_name = 'list:user:action:unsubscribe' + + subject = 'confirm {}'.format(self.token) + confirm_address = self.mlist.confirm_address(self.token) + email_address = self.address.email + # Send a verification email to the address. + template = getUtility(ITemplateLoader).get(template_name, self.mlist) + text = expand(template, self.mlist, dict( + token=self.token, + subject=subject, + confirm_email=confirm_address, + user_email=email_address, + # For backward compatibility. + confirm_address=confirm_address, + email_address=email_address, + domain_name=self.mlist.domain.mail_host, + contact_address=self.mlist.owner_address, + )) + msg = UserNotification(email_address, confirm_address, subject, text) + msg.send(self.mlist, add_precedence=False) # Now we wait for the confirmation. raise StopIteration -- cgit v1.2.3-70-g09d2