O365 / python-o365

A simple python library to interact with Microsoft Graph and Office 365 API
Apache License 2.0
1.67k stars 423 forks source link

Updating `TaskDetails`-object makes `Task`-object undeleteable. #1082

Open dekiesel opened 5 months ago

dekiesel commented 5 months ago

Problem:

task=bucket.create_task("testtask")
taskdetails=task.get_details()
taskdetails.update(description="testdescription")
task.delete()

results in:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python3.12/site-packages/O365/planner.py", line 378, in delete
    response = self.con.delete(url, headers={'If-Match': self._etag})
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/O365/connection.py", line 941, in delete
    return self.oauth_request(url, 'delete', **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/O365/connection.py", line 887, in oauth_request
    return self._internal_request(self.session, url, method, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/O365/connection.py", line 848, in _internal_request
    raise HTTPError('{} | Error Message: {}'.format(e.args[0], error_message),
requests.exceptions.HTTPError: 409 Client Error: Conflict for url: https://graph.microsoft.com/v1.0/planner/tasks/JqRjj7vHKkS5QbddA3F_RJgAFjk9 | Error Message: The attempted changes conflicted with already accepted changes. Read the latest state and resolve differences.

Workaround Refresh the task object without actually changing it.


task.update(title=task.title)
task.delete()

It would be nice if updating the TaskDetails-object also would refresh the Task-object.

alejcas commented 5 months ago

PR are very welcome. If you have the time and know how to properly solve this I would be grateful if you submit a PR.

Thank