summaryrefslogtreecommitdiff
path: root/src/mailman/commands/cli_lists.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/commands/cli_lists.py')
-rw-r--r--src/mailman/commands/cli_lists.py18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/mailman/commands/cli_lists.py b/src/mailman/commands/cli_lists.py
index 021ce5991..0b5973591 100644
--- a/src/mailman/commands/cli_lists.py
+++ b/src/mailman/commands/cli_lists.py
@@ -35,7 +35,8 @@ from mailman.config import config
from mailman.core.constants import system_preferences
from mailman.core.i18n import _
from mailman.email.message import UserNotification
-from mailman.interfaces.address import InvalidEmailAddressError
+from mailman.interfaces.address import (
+ IEmailValidator, InvalidEmailAddressError)
from mailman.interfaces.command import ICLISubCommand
from mailman.interfaces.domain import (
BadDomainSpecificationError, IDomainManager)
@@ -44,6 +45,9 @@ from mailman.interfaces.listmanager import IListManager, ListAlreadyExistsError
from mailman.utilities.i18n import make
+COMMASPACE = ', '
+
+
class Lists:
"""List all mailing lists"""
@@ -186,6 +190,18 @@ class Create:
domain_manager = getUtility(IDomainManager)
if domain_manager.get(domain) is None and args.domain:
domain_manager.add(domain)
+ # Validate the owner email addresses. The problem with doing this
+ # check in create_list() is that you wouldn't be able to distinguish
+ # between an InvalidEmailAddressError for the list name or the
+ # owners. I suppose we could subclass that exception though.
+ if args.owners:
+ validator = getUtility(IEmailValidator)
+ invalid_owners = (owner for owner in args.owners
+ if not validator.is_valid(owner))
+ if invalid_owners:
+ invalid = COMMASPACE.join(sorted(invalid_owners))
+ self.parser.error(_('Illegal owner addresses: $invalid'))
+ return
try:
mlist = create_list(fqdn_listname, args.owners)
except InvalidEmailAddressError: