diff options
| author | Aurélien Bompard | 2016-02-29 16:05:42 +0100 |
|---|---|---|
| committer | Barry Warsaw | 2016-02-29 21:52:13 -0500 |
| commit | 0699f9dcb8680ea99346f915680903a3c6f25318 (patch) | |
| tree | bb25c942166c8df8a7ed3de447a6ea21cb23cb29 /src/mailman/rest/header_matches.py | |
| parent | 9684f1fc0e8bbe2c41566bf16dab92a0ff0f8b81 (diff) | |
| download | mailman-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.py | 23 |
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: |
