diff options
Diffstat (limited to 'src/mailman/rest/configuration.py')
| -rw-r--r-- | src/mailman/rest/configuration.py | 29 |
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), |
