From 0c70beede6080cef14ba9955fb20feccbbcad83f Mon Sep 17 00:00:00 2001 From: phaer Date: Thu, 26 Feb 2026 20:21:24 +0100 Subject: [PATCH 1/3] Fix upload() return type for Radicale >= 3.5.5 --- etesync_dav/radicale/storage.py | 7 ++++++- etesync_dav/radicale/storage_etebase_collection.py | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/etesync_dav/radicale/storage.py b/etesync_dav/radicale/storage.py index d6312b12..8d4b0e16 100644 --- a/etesync_dav/radicale/storage.py +++ b/etesync_dav/radicale/storage.py @@ -22,6 +22,8 @@ import etesync as api import vobject +import radicale +from packaging.version import Version from radicale import pathutils from radicale.item import Item, get_etag from radicale.storage import ( @@ -421,7 +423,10 @@ def upload(self, href, vobject_item): href_mapper = HrefMapper(content=etesync_item._cache_obj, href=href) href_mapper.save(force_insert=True) - return self._get(href) + uploaded = self._get(href) + if Version(radicale.VERSION) >= Version("3.5.5"): + return (uploaded, item) + return uploaded def delete(self, href=None): """Delete an item. diff --git a/etesync_dav/radicale/storage_etebase_collection.py b/etesync_dav/radicale/storage_etebase_collection.py index 1ccc6dd4..0f685616 100644 --- a/etesync_dav/radicale/storage_etebase_collection.py +++ b/etesync_dav/radicale/storage_etebase_collection.py @@ -1,6 +1,8 @@ import re import vobject +import radicale +from packaging.version import Version from radicale import pathutils from radicale.item import Item from radicale.storage import ( @@ -294,7 +296,10 @@ def upload(self, href, vobject_item): href_mapper = HrefMapper(content=etesync_item.cache_item, href=href) href_mapper.save(force_insert=True) - return self._get(href) + uploaded = self._get(href) + if Version(radicale.VERSION) >= Version("3.5.5"): + return (uploaded, item) + return uploaded def delete(self, href=None): """Delete an item. From 764daa1998a540518fa858718922af071088020d Mon Sep 17 00:00:00 2001 From: phaer Date: Thu, 26 Feb 2026 20:21:28 +0100 Subject: [PATCH 2/3] Fix WSGIResponse for Radicale >= 3.5.10 --- etesync_dav/radicale/web.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/etesync_dav/radicale/web.py b/etesync_dav/radicale/web.py index 869624f9..6b4c515b 100644 --- a/etesync_dav/radicale/web.py +++ b/etesync_dav/radicale/web.py @@ -12,6 +12,8 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +import radicale +from packaging.version import Version from radicale import web from etesync_dav.mac_helpers import has_ssl @@ -31,6 +33,8 @@ def start_response(status, headers): environ["wsgi.url_scheme"] = "https" body = list(app(environ, start_response))[0] ret_response.append(body) + if Version(radicale.VERSION) >= Version("3.5.10"): + ret_response.append(None) # xml_request field return tuple(ret_response) def get(self, environ, base_prefix, path, user): From 280490fd0f55e6e6347c713b165efbf7077a3374 Mon Sep 17 00:00:00 2001 From: phaer Date: Sun, 15 Mar 2026 20:02:02 +0100 Subject: [PATCH 3/3] Fix method signatures for Radicale >= 3.6.0 --- etesync_dav/radicale/web.py | 4 ++-- etesync_dav/radicale_main/server.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/etesync_dav/radicale/web.py b/etesync_dav/radicale/web.py index 6b4c515b..685633bd 100644 --- a/etesync_dav/radicale/web.py +++ b/etesync_dav/radicale/web.py @@ -37,8 +37,8 @@ def start_response(status, headers): ret_response.append(None) # xml_request field return tuple(ret_response) - def get(self, environ, base_prefix, path, user): + def get(self, environ, base_prefix, path, user, *args, **kwargs): return self._call(environ, base_prefix, path, user) - def post(self, environ, base_prefix, path, user): + def post(self, environ, base_prefix, path, user, *args, **kwargs): return self._call(environ, base_prefix, path, user) diff --git a/etesync_dav/radicale_main/server.py b/etesync_dav/radicale_main/server.py index b5936616..0b3f18a8 100644 --- a/etesync_dav/radicale_main/server.py +++ b/etesync_dav/radicale_main/server.py @@ -53,13 +53,13 @@ class MyApplication(Application): - def do_POST(self, environ, base_prefix, path, user, remote_host="", user_agent=""): + def do_POST(self, environ, base_prefix, path, user, *args, **kwargs): """Manage POST request.""" # Dispatch .web URL to web module if path == "/.web" or path.startswith("/.web/"): - return self._web.post(environ, base_prefix, path, user) + return self._web.post(environ, base_prefix, path, user, *args, **kwargs) - return super().do_POST(environ, base_prefix, path, user, remote_host, user_agent) + return super().do_POST(environ, base_prefix, path, user, *args, **kwargs) def format_address(address):