From 0ef93a9c8a50829053c7a301c4688dba3152c9ef Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Tue, 22 Apr 2025 21:31:25 +0200 Subject: [PATCH 1/4] update copyright --- radicale/tests/test_base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radicale/tests/test_base.py b/radicale/tests/test_base.py index 75df0592..cf14193a 100644 --- a/radicale/tests/test_base.py +++ b/radicale/tests/test_base.py @@ -1,7 +1,7 @@ # This file is part of Radicale - CalDAV and CardDAV server # Copyright © 2012-2017 Guillaume Ayoub # Copyright © 2017-2022 Unrud -# Copyright © 2024-2024 Peter Bieringer +# Copyright © 2024-2025 Peter Bieringer # # This library is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by From 12714cd25ce5214cd403877e4cdcbbd9f07dd092 Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Tue, 22 Apr 2025 21:31:59 +0200 Subject: [PATCH 2/4] fix for https://github.com/Kozea/Radicale/issues/1765 --- radicale/app/put.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/radicale/app/put.py b/radicale/app/put.py index fda6140b..82d04a3f 100644 --- a/radicale/app/put.py +++ b/radicale/app/put.py @@ -282,6 +282,10 @@ class ApplicationPartPut(ApplicationBase): logger.warning( "Bad PUT request on %r (upload): %s", path, e, exc_info=True) return httputils.BAD_REQUEST + if (item and item.uid == prepared_item.uid): + logger.debug("PUT request updated existing item %r", path) + headers = {"ETag": etag} + return client.NO_CONTENT, headers, None headers = {"ETag": etag} return client.CREATED, headers, None From e144ecf06b25eaa2db1ed32ccea3fdc4f19ad3e1 Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Tue, 22 Apr 2025 21:32:13 +0200 Subject: [PATCH 3/4] fix testcases related to https://github.com/Kozea/Radicale/issues/1765 --- radicale/tests/test_base.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/radicale/tests/test_base.py b/radicale/tests/test_base.py index cf14193a..3639ad2c 100644 --- a/radicale/tests/test_base.py +++ b/radicale/tests/test_base.py @@ -222,7 +222,7 @@ permissions: RrWw""") event_modified = get_file_content("event1_modified.ics") path = "/calendar.ics/event1.ics" self.put(path, event) - self.put(path, event_modified) + self.put(path, event_modified, check=204) _, answer = self.get("/calendar.ics/") assert answer.count("BEGIN:VEVENT") == 1 _, answer = self.get(path) @@ -1594,8 +1594,8 @@ permissions: RrWw""") self.put(event_path, event1) sync_token, responses = self._report_sync_token(calendar_path) assert len(responses) == 1 and responses[event_path] == 200 - self.put(event_path, event2) - self.put(event_path, event1) + self.put(event_path, event2, check=204) + self.put(event_path, event1, check=204) sync_token, responses = self._report_sync_token( calendar_path, sync_token) if not self.full_sync_token_support and not sync_token: From f6199d7fc1f09dc83ebdbe970c64b2eeb162da19 Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Tue, 22 Apr 2025 21:33:02 +0200 Subject: [PATCH 4/4] changelog for fix of https://github.com/Kozea/Radicale/issues/1765 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index afbda692..d128fef5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ * Adjust: [auth] ldap: use ldap_user_attr either first element of list or directly * Fix: use value of property for time range filter * Add: [auth] ldap: option ldap_security (none, startls, tls) for additional support of STARTTLS, deprecate ldap_use_ssl +* Fix: return 204 instead of 201 in case PUT updates an item ## 3.5.1