From 76c2ab7cf49fa974e2e1de91ad0fe2cb17f493dd Mon Sep 17 00:00:00 2001 From: bakeable Date: Mon, 22 Jul 2024 17:04:26 +0200 Subject: [PATCH] Overwriting content-type in case of new product --- akeneo_connector/akeneo_connector.py | 8 ++++++-- akeneo_connector/akeneo_product.py | 6 +++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/akeneo_connector/akeneo_connector.py b/akeneo_connector/akeneo_connector.py index 90566fe..51ddf89 100644 --- a/akeneo_connector/akeneo_connector.py +++ b/akeneo_connector/akeneo_connector.py @@ -118,7 +118,7 @@ def get(self, url: str): return data - def update(self, url: str, payload: list | dict): + def update(self, url: str, payload: list | dict, is_new: bool = False): """ Updates an item in Akeneo. @@ -136,9 +136,13 @@ def update(self, url: str, payload: list | dict): # Join the JSON-strings into a single string data_str = "\n".join(batch_strings) + # Create headers + headers = self.headers.copy() + headers['Content-Type'] = 'application/vnd.akeneo.collection+json' if not is_new else 'application/json' + # Set the payload to the joined JSON-strings print(f"PATCH {url}") - response = req.patch(url, headers=self.headers, data=data_str) + response = req.patch(url, headers=headers, data=data_str) # Check if the request was successful if response.status_code < 200 or response.status_code >= 300: diff --git a/akeneo_connector/akeneo_product.py b/akeneo_connector/akeneo_product.py index edea12e..852ac38 100644 --- a/akeneo_connector/akeneo_product.py +++ b/akeneo_connector/akeneo_product.py @@ -357,7 +357,7 @@ def get(self, identifier: str | None = None, with_attribute_options: bool = Fals return None - def update(self): + def update(self, is_new = False): """ Updates the product. @@ -368,7 +368,7 @@ def update(self): url = self.connector.product_url.format(identifier=self.identifier) # Update the product - return self.connector.update(url, self.payload()) + return self.connector.update(url, self.payload(), is_new=is_new) def create(self): """ @@ -378,7 +378,7 @@ def create(self): bool: JSON response if successful, None otherwise. """ # Update is same - return self.update() + return self.update(is_new=True) def get_media(self, media_attribute: str, locale: str | None = None, scope: str | None = None): """