SAP / python-pyodata

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

AttributeError: 'list' object has no attribute 'next_url' #238

Closed Ndz85 closed 1 year ago

Ndz85 commented 1 year ago

I get this error when following the next_url code. V3

jobs = service.entity_sets.Jobs.get_entities().select('Location').execute()
while True:
    for job in jobs:
     print(job.Location)

    # Stop if server has no more entities left
    if jobs.next_url is None:
        break

    # We got a partial answer - continue with next page
    jobs = service.entity_sets.Jobs.get_entities().next_url(jobs.next_url).execute()
phanak-sap commented 1 year ago

V3 is the problem, pyodata at the moment supports only V2 odata protocol. Lots of things are backward compatible with V2, but some incompatible changes are there.

Out of curiosity, could you paste the $metadata for the service and the json response for the: service.entity_sets.Jobs.get_entities().select('Location').execute()

Or you may directly provide failing test - check this one as a base: https://github.com/SAP/python-pyodata/blob/66b3847b80ba17e243763b152a1ccbc82f620500/tests/test_service_v2.py#L2082

Just providing the code that creates the error is not something that I can reproduce locally.

Since it got through the initial metadata parsing, I would like to check if you by accident uncover bug that would be present in odata V2 service as well.

Just glancing over V3 spec, the __next field should be in the JSON response similarly to V2 version - https://www.odata.org/documentation/odata-version-3-0/json-verbose-format/.

phanak-sap commented 1 year ago

Hi @Ndz85 I am closing this issue due impossibility to reproduce and inactivity from your side. If you return to this with code that reproduces the problem, please reopen.