From d1ff39c40b13e33363640ed34abc81d6322745c8 Mon Sep 17 00:00:00 2001 From: Aleksandra Ovchinnikova Date: Fri, 11 Aug 2023 17:17:00 -0700 Subject: [PATCH] LITE-28124 Add parameters dependencies support for product operations --- connect/cli/plugins/product/sync/params.py | 57 +++++++++++++++++++++ tests/fixtures/params_sync.xlsx | Bin 14333 -> 14761 bytes tests/plugins/product/sync/test_params.py | 15 ++++-- 3 files changed, 68 insertions(+), 4 deletions(-) diff --git a/connect/cli/plugins/product/sync/params.py b/connect/cli/plugins/product/sync/params.py index b3ee0baa..a410f536 100644 --- a/connect/cli/plugins/product/sync/params.py +++ b/connect/cli/plugins/product/sync/params.py @@ -27,6 +27,8 @@ def __init__(self, client, progress, stats): self._worksheet_name = None self.__stats = stats self._mstats = None + self._id_mapping = {} + self._param_deps = {} super(ParamsSynchronizer, self).__init__(client, progress) def open(self, input_file, worksheet): @@ -69,6 +71,7 @@ def sync(self): # noqa: CCR001 continue param_payload = {} + dependency = None if data.json_properties: param_payload = json.loads(data.json_properties) param_payload['name'] = data.id @@ -79,6 +82,9 @@ def sync(self): # noqa: CCR001 param_payload['type'] = data.type if 'constraints' not in param_payload: param_payload['constraints'] = {} + if 'dependency' in param_payload['constraints']: + dependency = param_payload['constraints']['dependency'] + del param_payload['constraints']['dependency'] param_payload['constraints']['required'] = False if data.required == '-' else True param_payload['constraints']['unique'] = False if data.unique == '-' else True param_payload['constraints']['hidden'] = False if data.hidden == '-' else True @@ -98,6 +104,9 @@ def sync(self): # noqa: CCR001 ) self._update_sheet_row(ws, row_idx, param) self._mstats.updated() + self._id_mapping[data.id] = param['id'] + if dependency: + self._param_deps[param['id']] = dependency except Exception as e: self._mstats.error(str(e), row_idx) @@ -106,16 +115,24 @@ def sync(self): # noqa: CCR001 original_param = self._get_original_param(data) if original_param: self._updated_or_skipped(ws, row_idx, original_param, param_payload) + self._id_mapping[data.id] = original_param['id'] continue param = self._client.products[self._product_id].parameters.create( param_payload, ) self._update_sheet_row(ws, row_idx, param) self._mstats.created() + self._id_mapping[data.id] = param['id'] + if dependency: + self._param_deps[param['id']] = dependency except Exception as e: self._mstats.error(str(e), row_idx) + self._progress.update(task, completed=ws.max_row - 1) + if self._param_type == 'ordering': + self._process_constraints_dependency(ws) + @staticmethod def _update_sheet_row(ws, row_idx, param=None): ws.cell(row_idx, 3, value='-') @@ -244,3 +261,43 @@ def _updated_or_skipped(self, ws, row_idx, original, payload): ) self._update_sheet_row(ws, row_idx, param) self._mstats.updated() + + def _process_constraints_dependency(self, ws): + task = self._progress.add_task( + 'Processing param dependencies', + total=len(self._param_deps.keys()), + ) + for row_idx in range(2, ws.max_row + 1): + data = _RowData(*[ws.cell(row_idx, col_idx).value for col_idx in range(1, 15)]) + if data.verbose_id not in self._param_deps: + continue + + self._progress.update( + task, + description=f'Processing param dependency {data.id}', + advance=1, + ) + + param_payload = {'constraints': json.loads(data.json_properties)['constraints']} + param_payload['constraints']['required'] = False if data.required == '-' else True + param_payload['constraints']['unique'] = False if data.unique == '-' else True + param_payload['constraints']['hidden'] = False if data.hidden == '-' else True + + dependency = self._param_deps[data.verbose_id] + dependency['parameter']['id'] = self._id_mapping[dependency['parameter']['name']] + param_payload['constraints']['dependency'] = dependency + + try: + param = ( + self._client.products[self._product_id] + .parameters[data.verbose_id] + .update( + param_payload, + ) + ) + self._update_sheet_row(ws, row_idx, param) + self._mstats.updated() + except Exception as e: + self._mstats.error(str(e), row_idx) + + self._progress.update(task, completed=len(self._param_deps.keys())) diff --git a/tests/fixtures/params_sync.xlsx b/tests/fixtures/params_sync.xlsx index b98b7b25f3c359c2978b4514319923490fb87e47..9b84e41c193203e56e939b09ca76221c2181fe56 100644 GIT binary patch delta 8407 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 CcDD=w delta 7979 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 +fTm<4b|Z0; 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 G^?v||RWeBc diff --git a/tests/plugins/product/sync/test_params.py b/tests/plugins/product/sync/test_params.py index a89536b5..5f66a5e0 100644 --- a/tests/plugins/product/sync/test_params.py +++ b/tests/plugins/product/sync/test_params.py @@ -651,9 +651,9 @@ def test_validate_update( synchronizer.sync() assert stats['Ordering Parameters'].get_counts_as_dict() == { - 'processed': 1, + 'processed': 2, 'created': 0, - 'updated': 1, + 'updated': 2, 'deleted': 0, 'skipped': 0, 'errors': 0, @@ -695,16 +695,23 @@ def test_validate_create( json=response, ) + mocked_responses.add( + method='PUT', + url='https://localhost/public/v1/products/PRD-276-377-545/parameters/PRM-276-377-545-0008', + json={}, + status=400, + ) + synchronizer.open(f'{fs.root_path}/test.xlsx', 'Ordering Parameters') synchronizer.sync() assert stats['Ordering Parameters'].get_counts_as_dict() == { - 'processed': 1, + 'processed': 2, 'created': 1, 'updated': 0, 'deleted': 0, 'skipped': 0, - 'errors': 0, + 'errors': 1, }