dancingqueens
Neues Mitglied
Hallo zusammen
Wir haben aktuell ein Problem mit dem POST von Images von Odoo zu JTL FFN via API. Hat jemand bereits Erfahrung damit? JTL akzeptiert unseren Content nicht.
Unser Snipped bis jetzt:
def _upload_jtl_product_picture(self, jfsku, instance, queue_line):
log_model = self.env['jtl. log.lines']
product_model_id = self.env.ref('product.model_product_product').id
try:
image_data = base64.b64decode(self.image_1920.strip())
image_extension = mimetypes.guess_extension(mimetypes.guess_type("dummy.jpg")[0])
filename = f"{jfsku}{image_extension or '.jpg'}"
mime_type = mimetypes.guess_type(filename)[0] or 'application/octet-stream'
multipart_data = MultipartEncoder(
fields={
'file': (filename, image_data, mime_type)
}
)
headers = {
'Authorization': f'Bearer {instance.jtl_access_token}',
'Content-Type': multipart_data.content_type
}
endpoint_url = f"https://ffn2.api.jtl-software.com/api/v1/merchant/products/{jfsku}/pictures"
response = requests.post(endpoint_url, headers=headers, data=multipart_data)
if response.status_code not in [200, 201]:
log_model.create([{
'jtl_instance_id': instance,
'model_id': product_model_id,
'default_code': self.default_code or jfsku,
'res_id': self.id,
'reference': self.name,
'message': f'Failed product image export: {response.status_code} - {response.text}',
'log_line_type': 'fail',
'jtl_sync_type': 'product',
'type': 'export',
'jtl_product_data_queue_line_id': queue_line.id,
}])
Wir haben aktuell ein Problem mit dem POST von Images von Odoo zu JTL FFN via API. Hat jemand bereits Erfahrung damit? JTL akzeptiert unseren Content nicht.
Unser Snipped bis jetzt:
def _upload_jtl_product_picture(self, jfsku, instance, queue_line):
log_model = self.env['jtl. log.lines']
product_model_id = self.env.ref('product.model_product_product').id
try:
image_data = base64.b64decode(self.image_1920.strip())
image_extension = mimetypes.guess_extension(mimetypes.guess_type("dummy.jpg")[0])
filename = f"{jfsku}{image_extension or '.jpg'}"
mime_type = mimetypes.guess_type(filename)[0] or 'application/octet-stream'
multipart_data = MultipartEncoder(
fields={
'file': (filename, image_data, mime_type)
}
)
headers = {
'Authorization': f'Bearer {instance.jtl_access_token}',
'Content-Type': multipart_data.content_type
}
endpoint_url = f"https://ffn2.api.jtl-software.com/api/v1/merchant/products/{jfsku}/pictures"
response = requests.post(endpoint_url, headers=headers, data=multipart_data)
if response.status_code not in [200, 201]:
log_model.create([{
'jtl_instance_id': instance,
'model_id': product_model_id,
'default_code': self.default_code or jfsku,
'res_id': self.id,
'reference': self.name,
'message': f'Failed product image export: {response.status_code} - {response.text}',
'log_line_type': 'fail',
'jtl_sync_type': 'product',
'type': 'export',
'jtl_product_data_queue_line_id': queue_line.id,
}])