diff --git a/radicale/sharing/__init__.py b/radicale/sharing/__init__.py index 43d4da94..9c0bf99e 100644 --- a/radicale/sharing/__init__.py +++ b/radicale/sharing/__init__.py @@ -281,7 +281,8 @@ class BaseSharing: def database_delete_sharing(self, ShareType: str, - PathOrToken: str) -> dict: + PathOrToken: str, + User: str) -> dict: """ delete sharing """ return {"status": "not-implemented"} @@ -1223,7 +1224,8 @@ class BaseSharing: if user == share['Owner']: result = self.database_delete_sharing( ShareType=ShareType, - PathOrToken=PathOrToken) # verification above that it is not None + PathOrToken=PathOrToken, + User=share['Owner']) # verification above that it is not None else: # only owner is permitted to delete a share logger.warning(api_info + ": %r not permitted for user %r", PathOrToken, user) diff --git a/radicale/sharing/csv.py b/radicale/sharing/csv.py index 3c3d3c18..ccfd448c 100644 --- a/radicale/sharing/csv.py +++ b/radicale/sharing/csv.py @@ -371,12 +371,13 @@ class Sharing(sharing.BaseSharing): def database_delete_sharing(self, ShareType: str, - PathOrToken: str) -> dict: + PathOrToken: str, + User: str) -> dict: """ delete sharing """ if logger.isEnabledFor(logging.DEBUG): logger.debug("TRACE/sharing/%s/delete: PathOrToken=%r", ShareType, PathOrToken) - with self._storage.acquire_lock("w", path=self._sharing_db_file): + with self._storage.acquire_lock("w", User, path=self._sharing_db_file): # lookup token found = False index = 0 diff --git a/radicale/sharing/files.py b/radicale/sharing/files.py index 13ca15a6..06b999d1 100644 --- a/radicale/sharing/files.py +++ b/radicale/sharing/files.py @@ -362,7 +362,8 @@ class Sharing(sharing.BaseSharing): def database_delete_sharing(self, ShareType: str, - PathOrToken: str) -> dict: + PathOrToken: str, + User: str) -> dict: """ delete sharing """ if logger.isEnabledFor(logging.DEBUG): logger.debug("TRACE/sharing/%s/delete: PathOrToken=%r", ShareType, PathOrToken) @@ -372,8 +373,8 @@ class Sharing(sharing.BaseSharing): if not os.path.isfile(sharing_config_file): return {"status": "not-found"} - # read content - with self._storage.acquire_lock("r", path=sharing_config_file): + # open writable so storage hook triggers + with self._storage.acquire_lock("w", User, path=sharing_config_file): # read file with open(sharing_config_file, "rb") as fb: (version, row) = pickle.load(fb)