@@ -110,6 +110,29 @@ def _check_cbc_task_status(cbc_service, tracking_id):
110110 raise TaskException (f'Something went wrong with task: { tracking_id } ' )
111111
112112
113+ def check_and_update_product (deployment_request , cbc_service , ** kwargs ):
114+ if not deployment_request .manually :
115+
116+ product_id = deployment_request .deployment .product_id
117+
118+ response = _execute_with_retries (
119+ cbc_service .get_product_details , func_kwargs = {'product_id' : product_id },
120+ )
121+
122+ if 'error' in response .keys ():
123+ raise Exception (response ['error' ])
124+
125+ if response .get ('isUpdateAvailable' ):
126+ response = _execute_with_retries (
127+ cbc_service .update_product , func_kwargs = {'product_id' : product_id },
128+ )
129+
130+ if 'error' in response .keys ():
131+ raise Exception (response ['error' ])
132+
133+ return True
134+
135+
113136def prepare_ppr_file_for_task (
114137 connect_client ,
115138 file_data ,
@@ -168,29 +191,6 @@ def prepare_ppr_file_for_task(
168191 raise TaskException (f'Error while connecting to Connect: { e .message } ' )
169192
170193
171- def check_and_update_product (deployment_request , cbc_service , ** kwargs ):
172- if not deployment_request .manually :
173-
174- product_id = deployment_request .deployment .product_id
175-
176- response = _execute_with_retries (
177- cbc_service .get_product_details , func_kwargs = {'product_id' : product_id },
178- )
179-
180- if 'error' in response .keys ():
181- raise Exception (response ['error' ])
182-
183- if response .get ('isUpdateAvailable' ):
184- response = _execute_with_retries (
185- cbc_service .update_product , func_kwargs = {'product_id' : product_id },
186- )
187-
188- if 'error' in response .keys ():
189- raise Exception (response ['error' ])
190-
191- return True
192-
193-
194194def apply_ppr_and_delegate_to_marketplaces (
195195 deployment_request ,
196196 cbc_service ,
@@ -278,6 +278,47 @@ def apply_ppr_and_delegate_to_marketplaces(
278278 return True
279279
280280
281+ def delegate_to_l2 (deployment_request , cbc_service , connect_client , logger , ** kwargs ):
282+ """Task delegates PPR to L2 in Commerce
283+
284+ :param deployment_request: DeploymentRequest model
285+ :param cbc_service: CBC service
286+ :param connect_client: Connect client
287+ :param logger: logger
288+ :rtype bool
289+ :raises TaskException
290+ """
291+ if deployment_request .manually :
292+ return True
293+
294+ ppr_file_id = deployment_request .ppr .file
295+ deployment = deployment_request .deployment
296+ try :
297+ file_data = get_ppr_from_media (
298+ connect_client ,
299+ deployment .account_id ,
300+ deployment .id ,
301+ ppr_file_id ,
302+ )
303+ except ClientError as e :
304+ raise TaskException (f'Error while connecting to Connect: { e .message } ' )
305+
306+ file = prepare_ppr_file_for_task (
307+ connect_client = connect_client ,
308+ file_data = file_data ,
309+ file_name_template = PPR_FILE_NAME_DELEGATION_L2 ,
310+ deployment_request = deployment_request ,
311+ deployment = deployment ,
312+ process_func = process_ppr_file_for_delelegate_l2 ,
313+ )
314+
315+ tracking_id = _send_ppr (cbc_service , file )
316+ logger .debug (f'delegate_to_l2 dr_id: { deployment_request .id } , tracking_id: { tracking_id } ' )
317+ file .close ()
318+ _check_cbc_task_status (cbc_service , tracking_id )
319+ return True
320+
321+
281322def apply_pricelist_task (
282323 deployment_request ,
283324 cbc_service ,
@@ -354,47 +395,6 @@ def validate_pricelists_task(
354395 return True
355396
356397
357- def delegate_to_l2 (deployment_request , cbc_service , connect_client , logger , ** kwargs ):
358- """Task delegates PPR to L2 in Commerce
359-
360- :param deployment_request: DeploymentRequest model
361- :param cbc_service: CBC service
362- :param connect_client: Connect client
363- :param logger: logger
364- :rtype bool
365- :raises TaskException
366- """
367- if deployment_request .manually :
368- return True
369-
370- ppr_file_id = deployment_request .ppr .file
371- deployment = deployment_request .deployment
372- try :
373- file_data = get_ppr_from_media (
374- connect_client ,
375- deployment .account_id ,
376- deployment .id ,
377- ppr_file_id ,
378- )
379- except ClientError as e :
380- raise TaskException (f'Error while connecting to Connect: { e .message } ' )
381-
382- file = prepare_ppr_file_for_task (
383- connect_client = connect_client ,
384- file_data = file_data ,
385- file_name_template = PPR_FILE_NAME_DELEGATION_L2 ,
386- deployment_request = deployment_request ,
387- deployment = deployment ,
388- process_func = process_ppr_file_for_delelegate_l2 ,
389- )
390-
391- tracking_id = _send_ppr (cbc_service , file )
392- logger .debug (f'delegate_to_l2 dr_id: { deployment_request .id } , tracking_id: { tracking_id } ' )
393- file .close ()
394- _check_cbc_task_status (cbc_service , tracking_id )
395- return True
396-
397-
398398TASK_PER_TYPE = {
399399 TaskTypesChoices .product_setup : check_and_update_product ,
400400 TaskTypesChoices .apply_and_delegate : apply_ppr_and_delegate_to_marketplaces ,
0 commit comments