summaryrefslogtreecommitdiff
path: root/src/mailman/workflows/common.py
diff options
context:
space:
mode:
authorJ08nY2017-07-06 20:01:54 +0200
committerJ08nY2017-08-07 18:18:00 +0200
commiteddbcf479421e234100ee7cd9b425b9c057b04ee (patch)
treee4308148c27b692a48993a938550bb732453e692 /src/mailman/workflows/common.py
parent7e47b06fbd20ac349b653f4cfcd2157229be1176 (diff)
downloadmailman-eddbcf479421e234100ee7cd9b425b9c057b04ee.tar.gz
mailman-eddbcf479421e234100ee7cd9b425b9c057b04ee.tar.zst
mailman-eddbcf479421e234100ee7cd9b425b9c057b04ee.zip
Diffstat (limited to 'src/mailman/workflows/common.py')
-rw-r--r--src/mailman/workflows/common.py31
1 files changed, 22 insertions, 9 deletions
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
+ template_name = 'list:user:action:unsubscribe'
- # Triggering this event causes the confirmation message to be sent.
- notify(event_class(
- self.mlist, self.token, self.address.email))
+ 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