SAP / python-pyodata

Enterprise-ready Python OData client
Apache License 2.0
219 stars 93 forks source link

Multiple Issues with modify action for SAP SF OData API #136

Open sandevs opened 3 years ago

sandevs commented 3 years ago

I am using this library for developing a Python application that uses SAP SuccessFactors OData API. I spent last few days to resolve following issues with performing modify/update action but without any success. I finally came here to seek your help and suggestion. Please note that my application is already using this library for several OData query operations but I would prefer to use it also for update, create and delete operations too.

Batch Req. Header: [{'Content-Type': 'multipart/mixed;boundary=batch_1850_4989_2562'}] Batch Req. Body: [ --batch_1850_4989_2562 Content-Type: multipart/mixed;boundary=changeset_2364_6806_2818

--changeset_2364_6806_2818 Content-Type: application/http Content-Transfer-Encoding:binary

PUT PickListValueV2(PickListV2_effectiveStartDate=datetime'2020-10-23T00:00:00',PickListV2_id='employeeGroup',externalCode='EX') HTTP/1.1 Accept: application/json Content-Type: application/json

{"label_en_DEBUG": "External Employee", "status": "A"} --changeset_2364_6806_2818-- --batch_1850_4989_2562--] Sample Code: SampleAppCode

phanak-sap commented 3 years ago

Hi @sandevs

While this lib should work ideally on any odata service, we initially developed it for S4HANA odata services. I am not sure at the moment why there is explicit check for HTTP 204, but maybe this is the reason why.

I think it should be ok to quick patch this -as is present in other methods. - by if response.status_code != HTTP_CODE_OK: https://github.com/SAP/python-pyodata/blob/8b03265cbe653a951410d934e6bfb6bc5dd762c1/pyodata/v2/service.py#L1447.

Please create the PR and test the fix.. since your code is screenshot and not Gist/code comment, I don't in fact want to spent time for rewriting it for testing on my side. :)

If I understand this correctly, that should at least enable to move forward for single update requests. At the moment, not sure about the batch problem, this should be probably best as separate bug, ideally with code that reproduces the problem.