summaryrefslogtreecommitdiff
path: root/src/mailman/commands/eml_confirm.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/commands/eml_confirm.py')
-rw-r--r--src/mailman/commands/eml_confirm.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/mailman/commands/eml_confirm.py b/src/mailman/commands/eml_confirm.py
index a28a3f728..ddf0db0e2 100644
--- a/src/mailman/commands/eml_confirm.py
+++ b/src/mailman/commands/eml_confirm.py
@@ -25,7 +25,7 @@ __all__ = [
from mailman.core.i18n import _
from mailman.interfaces.command import ContinueProcessing, IEmailCommand
from mailman.interfaces.registrar import IRegistrar
-from zope.component import getUtility
+from mailman.interfaces.subscriptions import TokenOwner
from zope.interface import implementer
@@ -53,7 +53,19 @@ class Confirm:
return ContinueProcessing.yes
tokens.add(token)
results.confirms = tokens
- succeeded = getUtility(IRegistrar).confirm(token)
+ try:
+ token, token_owner, member = IRegistrar(mlist).confirm(token)
+ if token is None:
+ assert token_owner is TokenOwner.no_one, token_owner
+ assert member is not None, member
+ succeeded = True
+ else:
+ assert token_owner is not TokenOwner.no_one, token_owner
+ assert member is None, member
+ succeeded = False
+ except LookupError:
+ # The token must not exist in the database.
+ succeeded = False
if succeeded:
print(_('Confirmed'), file=results)
return ContinueProcessing.yes