summaryrefslogtreecommitdiff
path: root/src/mailman/rest/listconf.py
diff options
context:
space:
mode:
authorJ08nY2017-08-07 19:00:49 +0200
committerJ08nY2017-08-07 19:00:49 +0200
commitee9da27283ffb7adc836f764f1442cd06e3fb2a5 (patch)
tree2b687f39714580b1de70baf9e3dd9957326c4989 /src/mailman/rest/listconf.py
parentd107fd41f03b57f7731b60bb7ba921febc3ce3b9 (diff)
parentb902d7858d8302d248add89a5983c521c3581c4c (diff)
downloadmailman-ee9da27283ffb7adc836f764f1442cd06e3fb2a5.tar.gz
mailman-ee9da27283ffb7adc836f764f1442cd06e3fb2a5.tar.zst
mailman-ee9da27283ffb7adc836f764f1442cd06e3fb2a5.zip
Diffstat (limited to 'src/mailman/rest/listconf.py')
-rw-r--r--src/mailman/rest/listconf.py26
1 files changed, 22 insertions, 4 deletions
diff --git a/src/mailman/rest/listconf.py b/src/mailman/rest/listconf.py
index b62d34529..70f04999c 100644
--- a/src/mailman/rest/listconf.py
+++ b/src/mailman/rest/listconf.py
@@ -24,14 +24,17 @@ from mailman.interfaces.archiver import ArchivePolicy
from mailman.interfaces.autorespond import ResponseAction
from mailman.interfaces.digests import DigestFrequency
from mailman.interfaces.mailinglist import (
- DMARCMitigateAction, IAcceptableAliasSet, IMailingList, ReplyToMunging,
- SubscriptionPolicy)
+ DMARCMitigateAction, IAcceptableAliasSet, IMailingList, ReplyToMunging)
from mailman.interfaces.template import ITemplateManager
+from mailman.interfaces.workflows import ISubscriptionWorkflow
from mailman.rest.helpers import (
GetterSetter, bad_request, etag, no_content, not_found, okay)
from mailman.rest.validator import (
PatchValidator, ReadOnlyPATCHRequestError, UnknownPATCHRequestError,
- Validator, enum_validator, list_of_strings_validator)
+ Validator, enum_validator, list_of_strings_validator, policy_validator)
+from mailman.workflows.subscription import (
+ ConfirmModerationSubscriptionPolicy, ConfirmSubscriptionPolicy,
+ ModerationSubscriptionPolicy, OpenSubscriptionPolicy)
from public import public
from zope.component import getUtility
@@ -86,6 +89,20 @@ class URIAttributeMapper(GetterSetter):
getUtility(ITemplateManager).set(template_name, obj.list_id, value)
+class SubscriptionPolicyMapper(GetterSetter):
+
+ def get(self, obj, attribute):
+ assert IMailingList.providedBy(obj), obj
+ old_sub_map = {
+ OpenSubscriptionPolicy: 'open',
+ ConfirmSubscriptionPolicy: 'confirm',
+ ModerationSubscriptionPolicy: 'moderate',
+ ConfirmModerationSubscriptionPolicy: 'confirm_then_moderate'
+ }
+ cls = getattr(obj, attribute)
+ return old_sub_map.get(cls, cls.name)
+
+
# Additional validators for converting from web request strings to internal
# data types. See below for details.
@@ -179,7 +196,8 @@ ATTRIBUTES = dict(
request_address=GetterSetter(None),
send_welcome_message=GetterSetter(as_boolean),
subject_prefix=GetterSetter(str),
- subscription_policy=GetterSetter(enum_validator(SubscriptionPolicy)),
+ subscription_policy=SubscriptionPolicyMapper(
+ policy_validator(ISubscriptionWorkflow)),
volume=GetterSetter(None),
)