Merge pull request #2074 from dingodoppelt/patch-1
Trigger storage hook on sharing/delete with files backend
This commit is contained in:
@@ -281,7 +281,8 @@ class BaseSharing:
|
|||||||
|
|
||||||
def database_delete_sharing(self,
|
def database_delete_sharing(self,
|
||||||
ShareType: str,
|
ShareType: str,
|
||||||
PathOrToken: str) -> dict:
|
PathOrToken: str,
|
||||||
|
User: str) -> dict:
|
||||||
""" delete sharing """
|
""" delete sharing """
|
||||||
return {"status": "not-implemented"}
|
return {"status": "not-implemented"}
|
||||||
|
|
||||||
@@ -1223,7 +1224,8 @@ class BaseSharing:
|
|||||||
if user == share['Owner']:
|
if user == share['Owner']:
|
||||||
result = self.database_delete_sharing(
|
result = self.database_delete_sharing(
|
||||||
ShareType=ShareType,
|
ShareType=ShareType,
|
||||||
PathOrToken=PathOrToken) # verification above that it is not None
|
PathOrToken=PathOrToken,
|
||||||
|
User=share['Owner']) # verification above that it is not None
|
||||||
else:
|
else:
|
||||||
# only owner is permitted to delete a share
|
# only owner is permitted to delete a share
|
||||||
logger.warning(api_info + ": %r not permitted for user %r", PathOrToken, user)
|
logger.warning(api_info + ": %r not permitted for user %r", PathOrToken, user)
|
||||||
|
|||||||
@@ -371,12 +371,13 @@ class Sharing(sharing.BaseSharing):
|
|||||||
|
|
||||||
def database_delete_sharing(self,
|
def database_delete_sharing(self,
|
||||||
ShareType: str,
|
ShareType: str,
|
||||||
PathOrToken: str) -> dict:
|
PathOrToken: str,
|
||||||
|
User: str) -> dict:
|
||||||
""" delete sharing """
|
""" delete sharing """
|
||||||
if logger.isEnabledFor(logging.DEBUG):
|
if logger.isEnabledFor(logging.DEBUG):
|
||||||
logger.debug("TRACE/sharing/%s/delete: PathOrToken=%r", ShareType, PathOrToken)
|
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
|
# lookup token
|
||||||
found = False
|
found = False
|
||||||
index = 0
|
index = 0
|
||||||
|
|||||||
@@ -362,7 +362,8 @@ class Sharing(sharing.BaseSharing):
|
|||||||
|
|
||||||
def database_delete_sharing(self,
|
def database_delete_sharing(self,
|
||||||
ShareType: str,
|
ShareType: str,
|
||||||
PathOrToken: str) -> dict:
|
PathOrToken: str,
|
||||||
|
User: str) -> dict:
|
||||||
""" delete sharing """
|
""" delete sharing """
|
||||||
if logger.isEnabledFor(logging.DEBUG):
|
if logger.isEnabledFor(logging.DEBUG):
|
||||||
logger.debug("TRACE/sharing/%s/delete: PathOrToken=%r", ShareType, PathOrToken)
|
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):
|
if not os.path.isfile(sharing_config_file):
|
||||||
return {"status": "not-found"}
|
return {"status": "not-found"}
|
||||||
|
|
||||||
# read content
|
# open writable so storage hook triggers
|
||||||
with self._storage.acquire_lock("r", path=sharing_config_file):
|
with self._storage.acquire_lock("w", User, path=sharing_config_file):
|
||||||
# read file
|
# read file
|
||||||
with open(sharing_config_file, "rb") as fb:
|
with open(sharing_config_file, "rb") as fb:
|
||||||
(version, row) = pickle.load(fb)
|
(version, row) = pickle.load(fb)
|
||||||
|
|||||||
Reference in New Issue
Block a user