summaryrefslogtreecommitdiff
path: root/src/mailman/rest/configuration.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/rest/configuration.py')
-rw-r--r--src/mailman/rest/configuration.py29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/mailman/rest/configuration.py b/src/mailman/rest/configuration.py
index c726d8a81..eec248ad0 100644
--- a/src/mailman/rest/configuration.py
+++ b/src/mailman/rest/configuration.py
@@ -34,9 +34,10 @@ from mailman.core.errors import (
from mailman.interfaces.action import Action
from mailman.interfaces.archiver import ArchivePolicy
from mailman.interfaces.autorespond import ResponseAction
-from mailman.interfaces.mailinglist import IAcceptableAliasSet, ReplyToMunging
+from mailman.interfaces.mailinglist import IAcceptableAliasSet, IListArchiverSet, ReplyToMunging
from mailman.rest.helpers import GetterSetter, PATCH, etag, no_content
from mailman.rest.validator import PatchValidator, Validator, enum_validator
+from mailman.model.mailinglist import ListArchiverSet
@@ -64,6 +65,22 @@ class AcceptableAliases(GetterSetter):
for alias in value:
alias_set.add(unicode(alias))
+class ListArchivers(GetterSetter):
+
+ def get(self, mlist, attribute):
+ """Return the mailing list's acceptable aliases."""
+ assert attribute == 'archivers', (
+ 'Unexpected attribute: {0}'.format(attribute))
+ archivers = ListArchiverSet(mlist)
+ return archivers.getAll()
+
+ def put(self, mlist, attribute, value):
+ assert attribute == 'archivers', (
+ 'Unexpected attribute: {0}'.format(attribute))
+ archivers = ListArchiverSet(mlist)
+ for key, value in value.iteritems():
+ archivers.set(key, value)
+
# Additional validators for converting from web request strings to internal
@@ -80,6 +97,15 @@ def list_of_unicode(values):
"""Turn a list of things into a list of unicodes."""
return [unicode(value) for value in values]
+def list_of_pairs_to_dict(pairs):
+ dict = {}
+ # If pairs has only one element then it is not a list but a string.
+ if not isinstance(pairs, list):
+ pairs = [pairs]
+ for key_value in pairs:
+ parts = key_value.split('|')
+ dict[parts[0]] = parts[1]
+ return dict
# This is the list of IMailingList attributes that are exposed through the
@@ -98,6 +124,7 @@ def list_of_unicode(values):
ATTRIBUTES = dict(
acceptable_aliases=AcceptableAliases(list_of_unicode),
+ archivers=ListArchivers(list_of_pairs_to_dict),
admin_immed_notify=GetterSetter(as_boolean),
admin_notify_mchanges=GetterSetter(as_boolean),
administrivia=GetterSetter(as_boolean),