summaryrefslogtreecommitdiff
path: root/src/mailman/rest/header_matches.py
diff options
context:
space:
mode:
authorAurélien Bompard2016-02-29 16:05:42 +0100
committerBarry Warsaw2016-02-29 21:52:13 -0500
commit0699f9dcb8680ea99346f915680903a3c6f25318 (patch)
treebb25c942166c8df8a7ed3de447a6ea21cb23cb29 /src/mailman/rest/header_matches.py
parent9684f1fc0e8bbe2c41566bf16dab92a0ff0f8b81 (diff)
downloadmailman-0699f9dcb8680ea99346f915680903a3c6f25318.tar.gz
mailman-0699f9dcb8680ea99346f915680903a3c6f25318.tar.zst
mailman-0699f9dcb8680ea99346f915680903a3c6f25318.zip
Diffstat (limited to 'src/mailman/rest/header_matches.py')
-rw-r--r--src/mailman/rest/header_matches.py23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/mailman/rest/header_matches.py b/src/mailman/rest/header_matches.py
index c5fe88184..9d1afa546 100644
--- a/src/mailman/rest/header_matches.py
+++ b/src/mailman/rest/header_matches.py
@@ -54,8 +54,8 @@ class _HeaderMatchBase:
pattern=header_match.pattern,
self_link=self._location(header_match.position),
)
- if header_match.action is not None:
- resource['action'] = header_match.action
+ if header_match.chain is not None:
+ resource['action'] = header_match.chain
return resource
@@ -95,10 +95,10 @@ class HeaderMatch(_HeaderMatchBase):
self._position))
return
kws = dict(
- header=GetterSetter(lowercase),
- pattern=GetterSetter(str),
- position=GetterSetter(int),
- action=GetterSetter(enum_validator(Action)),
+ header=lowercase,
+ pattern=str,
+ position=int,
+ action=enum_validator(Action),
)
if is_optional:
# For a PATCH, all attributes are optional.
@@ -106,8 +106,14 @@ class HeaderMatch(_HeaderMatchBase):
else:
# For a PUT, position can remain unchanged and action can be None.
kws['_optional'] = ('action', 'position')
+ validator = Validator(**kws)
try:
- Validator(**kws).update(header_match, request)
+ arguments = validator(request)
+ if 'action' in arguments:
+ arguments['chain'] = arguments['action'].name
+ del arguments['action']
+ for key, value in arguments.items():
+ setattr(header_match, key, value)
except ValueError as error:
bad_request(response, str(error))
return
@@ -148,6 +154,9 @@ class HeaderMatches(_HeaderMatchBase, CollectionMixin):
except ValueError as error:
bad_request(response, str(error))
return
+ if 'action' in arguments:
+ arguments['chain'] = arguments['action'].name
+ del arguments['action']
try:
self.header_matches.append(**arguments)
except ValueError: