summaryrefslogtreecommitdiff
path: root/Mailman/MailCommandHandler.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mailman/MailCommandHandler.py')
-rw-r--r--Mailman/MailCommandHandler.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/Mailman/MailCommandHandler.py b/Mailman/MailCommandHandler.py
index d8c5664ad..46e293057 100644
--- a/Mailman/MailCommandHandler.py
+++ b/Mailman/MailCommandHandler.py
@@ -32,6 +32,7 @@ from Mailman import Utils
from Mailman import Errors
from Mailman import Message
from Mailman import Pending
+from Mailman import MemberAdaptor
from Mailman.UserDesc import UserDesc
from Mailman.Logging.Syslog import syslog
import Mailman.i18n
@@ -363,7 +364,20 @@ The following is a detailed description of the problems.
trunc=0)
return
for option in options:
- if self.getMemberOption(sender, option_info[option]):
+ # We handle disabled delivery differently now
+ if option == 'nomail':
+ status = self.getDeliveryStatus(sender)
+ if status == MemberAdaptor.ENABLED:
+ value = _('off')
+ else:
+ reason = {
+ MemberAdaptor.BYUSER: _('by your configuration'),
+ MemberAdaptor.BYADMIN: _('by list admin'),
+ MemberAdaptor.BYBOUNCE: _('by bounce'),
+ MemberAdaptor.UNKNOWN : _('for unknown reasons'),
+ }[status]
+ value = _('on (%(reason)s')
+ elif self.getMemberOption(sender, option_info[option]):
value = 'on'
else:
value = 'off'
@@ -423,7 +437,11 @@ Valid options are:
# Set the option
try:
- self.setMemberOption(sender, option_info[option], value)
+ # delivery disable is handled separately now
+ if option == 'nomail':
+ self.setDeliveryStatus(sender, MemberAdaptor.BYUSER)
+ else:
+ self.setMemberOption(sender, option_info[option], value)
self.AddToResponse(_('Succeeded.'))
except Errors.AlreadyReceivingDigests:
self.AddError(_('You are already receiving digests.'))