From f4911a08e3824de4a8f5f39bf3c901d5c6191b6c Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 13 Feb 2020 15:09:08 +0100 Subject: [PATCH] wip (#39839) --- passerelle/apps/mdel_ddpacs/abstract.py | 2 ++ passerelle/apps/mdel_ddpacs/models.py | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/passerelle/apps/mdel_ddpacs/abstract.py b/passerelle/apps/mdel_ddpacs/abstract.py index 2e8943b6..85fbdc75 100644 --- a/passerelle/apps/mdel_ddpacs/abstract.py +++ b/passerelle/apps/mdel_ddpacs/abstract.py @@ -123,6 +123,8 @@ class Resource(BaseResource): 'code_insee': {'type': 'string'}, }) base_schema.setdefault('required', []).append('display_id') + if hasattr(cls, 'pre_process_create'): + base_schema['pre_process'] = cls.pre_process_create return base_schema def _handle_create(self, request, payload): diff --git a/passerelle/apps/mdel_ddpacs/models.py b/passerelle/apps/mdel_ddpacs/models.py index ca158e0e..2d8338e2 100644 --- a/passerelle/apps/mdel_ddpacs/models.py +++ b/passerelle/apps/mdel_ddpacs/models.py @@ -102,6 +102,26 @@ class Resource(abstract.Resource): def create(self, request, post_data): return self._handle_create(request, post_data) + def pre_process_create(self, data): + def helper(d): + if not isinstance(d, dict): + return + # choose between conventionType and conventionSpecifique + if 'conventionSpecifique' in d: + if d['conventionSpecifique'] == '': + del d['conventionSpecifique'] + else: + d.pop('conventionType', None) + # choose between filiationInconnu and filiationConnu + if 'filiationInconnu' in d: + if d['filiationInconnu'] == '': + del d['filiationInconnu'] + else: + d.pop('filiationConnu', None) + for key in d: + helper(d[key]) + helper(data) + Resource.create.endpoint_info.post['request_body']['schema']['application/json'] = Resource.get_create_schema() -- 2.24.0