cosmetics
This commit is contained in:
@@ -80,10 +80,10 @@ def xml_proppatch(base_prefix: str, path: str,
|
||||
all_props = radicale_item.check_and_sanitize_props(all_props_with_remove)
|
||||
if sharing and sharing_overlay and _sharing is not None:
|
||||
# _sharing is not None: always the case, but makes mypy happy
|
||||
_sharing.update_sharing(ShareType=sharing['ShareType'],
|
||||
PathOrToken=sharing['PathOrToken'],
|
||||
OwnerOrUser=sharing['User'],
|
||||
Properties=cast(Dict[str, str], all_props))
|
||||
_sharing.database_update_sharing(ShareType=sharing['ShareType'],
|
||||
PathOrToken=sharing['PathOrToken'],
|
||||
OwnerOrUser=sharing['User'],
|
||||
Properties=cast(Dict[str, str], all_props))
|
||||
else:
|
||||
if collection is not None:
|
||||
# always the case, but makes mypy happy
|
||||
|
||||
@@ -132,87 +132,87 @@ class BaseSharing:
|
||||
|
||||
# database tasks
|
||||
self.sharing_db_type = configuration.get("sharing", "type")
|
||||
logger.info("sharing.db_type: %s", self.sharing_db_type)
|
||||
logger.info("sharing.database_type: %s", self.sharing_db_type)
|
||||
|
||||
try:
|
||||
if self.init_database() is False:
|
||||
if self.database_init() is False:
|
||||
logger.info("sharing disabled as no database is active")
|
||||
self._enabled = False
|
||||
return
|
||||
except Exception as e:
|
||||
logger.error("sharing database cannot be initialized: %r", e)
|
||||
exit(1)
|
||||
database_info = self.get_database_info()
|
||||
database_info = self.database_get_info()
|
||||
if database_info:
|
||||
logger.info("sharing database info: %r", database_info)
|
||||
else:
|
||||
logger.info("sharing database info: (not provided)")
|
||||
|
||||
# overloadable functions
|
||||
def init_database(self) -> bool:
|
||||
""" initialize database """
|
||||
# overloadable database functions
|
||||
def database_init(self) -> bool:
|
||||
""" initialize db """
|
||||
return False
|
||||
|
||||
def get_database_info(self) -> Union[dict, None]:
|
||||
""" retrieve database information """
|
||||
def database_get_info(self) -> Union[dict, None]:
|
||||
""" retrieve db information """
|
||||
return None
|
||||
|
||||
def verify_database(self) -> bool:
|
||||
""" verify database information """
|
||||
def database_verify(self) -> bool:
|
||||
""" verify db information """
|
||||
return False
|
||||
|
||||
def list_sharing(self,
|
||||
OwnerOrUser: Union[str, None] = None,
|
||||
ShareType: Union[str, None] = None,
|
||||
PathOrToken: Union[str, None] = None,
|
||||
PathMapped: Union[str, None] = None,
|
||||
User: Union[str, None] = None,
|
||||
EnabledByOwner: Union[bool, None] = None,
|
||||
EnabledByUser: Union[bool, None] = None,
|
||||
HiddenByOwner: Union[bool, None] = None,
|
||||
HiddenByUser: Union[bool, None] = None) -> list[dict]:
|
||||
def database_list_sharing(self,
|
||||
OwnerOrUser: Union[str, None] = None,
|
||||
ShareType: Union[str, None] = None,
|
||||
PathOrToken: Union[str, None] = None,
|
||||
PathMapped: Union[str, None] = None,
|
||||
User: Union[str, None] = None,
|
||||
EnabledByOwner: Union[bool, None] = None,
|
||||
EnabledByUser: Union[bool, None] = None,
|
||||
HiddenByOwner: Union[bool, None] = None,
|
||||
HiddenByUser: Union[bool, None] = None) -> list[dict]:
|
||||
""" retrieve sharing """
|
||||
return []
|
||||
|
||||
def get_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str,
|
||||
OnlyEnabled: bool = True,
|
||||
User: Union[str, None] = None) -> Union[dict, None]:
|
||||
def database_get_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str,
|
||||
OnlyEnabled: bool = True,
|
||||
User: Union[str, None] = None) -> Union[dict, None]:
|
||||
""" retrieve sharing target and attributes by map """
|
||||
return {"status": "not-implemented"}
|
||||
|
||||
def create_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str, PathMapped: str,
|
||||
Owner: str, User: str,
|
||||
Permissions: str = "r",
|
||||
EnabledByOwner: bool = False, EnabledByUser: bool = False,
|
||||
HiddenByOwner: bool = True, HiddenByUser: bool = True,
|
||||
Timestamp: int = 0,
|
||||
Properties: Union[dict, None] = None) -> dict:
|
||||
def database_create_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str, PathMapped: str,
|
||||
Owner: str, User: str,
|
||||
Permissions: str = "r",
|
||||
EnabledByOwner: bool = False, EnabledByUser: bool = False,
|
||||
HiddenByOwner: bool = True, HiddenByUser: bool = True,
|
||||
Timestamp: int = 0,
|
||||
Properties: Union[dict, None] = None) -> dict:
|
||||
""" create sharing """
|
||||
return {"status": "not-implemented"}
|
||||
|
||||
def update_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str,
|
||||
OwnerOrUser: Union[str, None] = None,
|
||||
User: Union[str, None] = None,
|
||||
PathMapped: Union[str, None] = None,
|
||||
Permissions: Union[str, None] = None,
|
||||
EnabledByOwner: Union[bool, None] = None,
|
||||
EnabledByUser: Union[bool, None] = None,
|
||||
HiddenByOwner: Union[bool, None] = None,
|
||||
HiddenByUser: Union[bool, None] = None,
|
||||
Timestamp: int = 0,
|
||||
Properties: Union[dict, None] = None) -> dict:
|
||||
def database_update_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str,
|
||||
OwnerOrUser: Union[str, None] = None,
|
||||
User: Union[str, None] = None,
|
||||
PathMapped: Union[str, None] = None,
|
||||
Permissions: Union[str, None] = None,
|
||||
EnabledByOwner: Union[bool, None] = None,
|
||||
EnabledByUser: Union[bool, None] = None,
|
||||
HiddenByOwner: Union[bool, None] = None,
|
||||
HiddenByUser: Union[bool, None] = None,
|
||||
Timestamp: int = 0,
|
||||
Properties: Union[dict, None] = None) -> dict:
|
||||
""" update sharing """
|
||||
return {"status": "not-implemented"}
|
||||
|
||||
def delete_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str) -> dict:
|
||||
def database_delete_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str) -> dict:
|
||||
""" delete sharing """
|
||||
return {"status": "not-implemented"}
|
||||
|
||||
@@ -221,7 +221,7 @@ class BaseSharing:
|
||||
""" verify database """
|
||||
logger.info("sharing database verification begin")
|
||||
logger.info("sharing database verification call: %s", self.sharing_db_type)
|
||||
result = self.verify_database()
|
||||
result = self.database_verify()
|
||||
if result is not True:
|
||||
logger.error("sharing database verification call -> PROBLEM: %s", self.sharing_db_type)
|
||||
return False
|
||||
@@ -231,7 +231,7 @@ class BaseSharing:
|
||||
# check all entries
|
||||
logger.info("sharing database verification content start")
|
||||
with self._storage.acquire_lock("r"):
|
||||
for entry in self.list_sharing():
|
||||
for entry in self.database_list_sharing():
|
||||
logger.debug("analyze: %r", entry)
|
||||
if entry['ShareType'] not in SHARE_TYPES_V1:
|
||||
logger.error("ShareType not supported: %r", entry['ShareType'])
|
||||
@@ -285,7 +285,7 @@ class BaseSharing:
|
||||
|
||||
# retrieve collections which are enabled and not hidden by owner+user
|
||||
if active:
|
||||
shared_collection_list = self.list_sharing(
|
||||
shared_collection_list = self.database_list_sharing(
|
||||
ShareType="map",
|
||||
OwnerOrUser=user,
|
||||
User=user,
|
||||
@@ -295,7 +295,7 @@ class BaseSharing:
|
||||
HiddenByUser=False)
|
||||
else:
|
||||
# unconditional
|
||||
shared_collection_list = self.list_sharing(
|
||||
shared_collection_list = self.database_list_sharing(
|
||||
ShareType="map",
|
||||
OwnerOrUser=user,
|
||||
User=user)
|
||||
@@ -320,7 +320,7 @@ class BaseSharing:
|
||||
# TODO add token validity checks
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("TRACE/sharing/token: supported token found in path: %r (token=%r)", path, match[1])
|
||||
return self.get_sharing(
|
||||
return self.database_get_sharing(
|
||||
ShareType="token",
|
||||
PathOrToken=match[1])
|
||||
else:
|
||||
@@ -337,7 +337,7 @@ class BaseSharing:
|
||||
if self.sharing_collection_by_map:
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("TRACE/sharing/map/resolver: check path: %r", path)
|
||||
result = self.get_sharing(
|
||||
result = self.database_get_sharing(
|
||||
ShareType="map",
|
||||
PathOrToken=path,
|
||||
User=user)
|
||||
@@ -348,7 +348,7 @@ class BaseSharing:
|
||||
parent_path = pathutils.parent_path(path)
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("TRACE/sharing/map/resolver: check parent path: %r", parent_path)
|
||||
result = self.get_sharing(
|
||||
result = self.database_get_sharing(
|
||||
ShareType="map",
|
||||
PathOrToken=parent_path,
|
||||
User=user)
|
||||
@@ -644,13 +644,13 @@ class BaseSharing:
|
||||
logger.debug("TRACE/" + api_info + ": filter: %r", PathOrToken)
|
||||
|
||||
if ShareType != "all":
|
||||
result_array = self.list_sharing(
|
||||
result_array = self.database_list_sharing(
|
||||
ShareType=ShareType,
|
||||
OwnerOrUser=user,
|
||||
PathMapped=PathMapped,
|
||||
PathOrToken=PathOrToken)
|
||||
else:
|
||||
result_array = self.list_sharing(
|
||||
result_array = self.database_list_sharing(
|
||||
OwnerOrUser=user,
|
||||
PathMapped=PathMapped,
|
||||
PathOrToken=PathOrToken)
|
||||
@@ -725,7 +725,7 @@ class BaseSharing:
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("TRACE/" + api_info + ": %r (Permissions=%r token=%r)", PathMapped, Permissions, token)
|
||||
|
||||
result = self.create_sharing(
|
||||
result = self.database_create_sharing(
|
||||
ShareType=ShareType,
|
||||
PathOrToken=token,
|
||||
PathMapped=PathMapped,
|
||||
@@ -750,7 +750,7 @@ class BaseSharing:
|
||||
PathOrToken = str(PathOrToken)
|
||||
|
||||
# retrieve existing share
|
||||
share = self.get_sharing(ShareType=ShareType, PathOrToken=PathOrToken, OnlyEnabled=False)
|
||||
share = self.database_get_sharing(ShareType=ShareType, PathOrToken=PathOrToken, OnlyEnabled=False)
|
||||
if share is not None:
|
||||
logger.error("Sharing/create/%s: already exists: %r", ShareType, PathOrToken)
|
||||
return httputils.CONFLICT
|
||||
@@ -792,7 +792,7 @@ class BaseSharing:
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("TRACE/" + api_info + ": %r (Permissions=%r PathOrToken=%r user=%r)", PathMapped, Permissions, PathOrToken, User)
|
||||
|
||||
result = self.create_sharing(
|
||||
result = self.database_create_sharing(
|
||||
ShareType=ShareType,
|
||||
PathOrToken=PathOrToken,
|
||||
PathMapped=PathMapped,
|
||||
@@ -840,7 +840,7 @@ class BaseSharing:
|
||||
PathOrToken = str(PathOrToken)
|
||||
|
||||
# retrieve existing share
|
||||
share = self.get_sharing(ShareType=ShareType, PathOrToken=PathOrToken, OnlyEnabled=False)
|
||||
share = self.database_get_sharing(ShareType=ShareType, PathOrToken=PathOrToken, OnlyEnabled=False)
|
||||
if share is None:
|
||||
return httputils.NOT_FOUND
|
||||
|
||||
@@ -852,7 +852,7 @@ class BaseSharing:
|
||||
logger.warning("Update sharing: access to PathMapped %r not allowed for user %r", PathMapped, user)
|
||||
return httputils.NOT_ALLOWED
|
||||
|
||||
result = self.update_sharing(
|
||||
result = self.database_update_sharing(
|
||||
ShareType=ShareType,
|
||||
PathMapped=PathMapped,
|
||||
Permissions=Permissions,
|
||||
@@ -887,7 +887,7 @@ class BaseSharing:
|
||||
return httputils.NOT_ALLOWED
|
||||
|
||||
# limited update as user
|
||||
result = self.update_sharing(
|
||||
result = self.database_update_sharing(
|
||||
ShareType=ShareType,
|
||||
PathOrToken=str(PathOrToken), # verification above that it is not None
|
||||
EnabledByUser=Enabled,
|
||||
@@ -930,12 +930,12 @@ class BaseSharing:
|
||||
PathOrToken = str(PathOrToken)
|
||||
|
||||
# check whether share exists
|
||||
share = self.get_sharing(ShareType=ShareType, PathOrToken=PathOrToken, OnlyEnabled=False)
|
||||
share = self.database_get_sharing(ShareType=ShareType, PathOrToken=PathOrToken, OnlyEnabled=False)
|
||||
if share is None:
|
||||
return httputils.NOT_FOUND
|
||||
|
||||
if user == share['Owner']:
|
||||
result = self.delete_sharing(
|
||||
result = self.database_delete_sharing(
|
||||
ShareType=ShareType,
|
||||
PathOrToken=PathOrToken) # verification above that it is not None
|
||||
else:
|
||||
@@ -982,7 +982,7 @@ class BaseSharing:
|
||||
else:
|
||||
PathOrToken = str(PathOrToken)
|
||||
|
||||
share = self.get_sharing(ShareType=ShareType, PathOrToken=PathOrToken, OnlyEnabled=False)
|
||||
share = self.database_get_sharing(ShareType=ShareType, PathOrToken=PathOrToken, OnlyEnabled=False)
|
||||
if share is None:
|
||||
return httputils.NOT_FOUND
|
||||
|
||||
@@ -1001,7 +1001,7 @@ class BaseSharing:
|
||||
if user == share['Owner']:
|
||||
if user == share['User']:
|
||||
# user is Owner and User
|
||||
result = self.update_sharing(
|
||||
result = self.database_update_sharing(
|
||||
ShareType=ShareType,
|
||||
PathOrToken=PathOrToken,
|
||||
EnabledByOwner=Enabled,
|
||||
@@ -1010,7 +1010,7 @@ class BaseSharing:
|
||||
HiddenByUser=Hidden,
|
||||
Timestamp=Timestamp)
|
||||
else:
|
||||
result = self.update_sharing(
|
||||
result = self.database_update_sharing(
|
||||
ShareType=ShareType,
|
||||
PathOrToken=PathOrToken,
|
||||
EnabledByOwner=Enabled,
|
||||
@@ -1018,7 +1018,7 @@ class BaseSharing:
|
||||
Timestamp=Timestamp)
|
||||
|
||||
elif user == share['User']:
|
||||
result = self.update_sharing(
|
||||
result = self.database_update_sharing(
|
||||
ShareType=ShareType,
|
||||
PathOrToken=str(PathOrToken), # verification above that it is not None
|
||||
EnabledByUser=Enabled,
|
||||
|
||||
@@ -31,7 +31,7 @@ class Sharing(sharing.BaseSharing):
|
||||
_sharing_db_file: str
|
||||
|
||||
# Overloaded functions
|
||||
def init_database(self) -> bool:
|
||||
def database_init(self) -> bool:
|
||||
logger.debug("sharing database initialization for type 'csv'")
|
||||
sharing_db_file = self.configuration.get("sharing", "database_path")
|
||||
if sharing_db_file == "":
|
||||
@@ -76,11 +76,11 @@ class Sharing(sharing.BaseSharing):
|
||||
self._sharing_db_file = sharing_db_file
|
||||
return True
|
||||
|
||||
def get_database_info(self) -> Union[dict, None]:
|
||||
def database_get_info(self) -> Union[dict, None]:
|
||||
database_info = {'type': "csv"}
|
||||
return database_info
|
||||
|
||||
def verify_database(self) -> bool:
|
||||
def database_verify(self) -> bool:
|
||||
logger.info("sharing database (csv) verification begin")
|
||||
logger.info("sharing database (csv) file: %r", self._sharing_db_file)
|
||||
logger.info("sharing database (csv) loaded entries: %d", self._lines)
|
||||
@@ -88,11 +88,11 @@ class Sharing(sharing.BaseSharing):
|
||||
logger.info("sharing database (csv) verification end")
|
||||
return True
|
||||
|
||||
def get_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str,
|
||||
OnlyEnabled: bool = True,
|
||||
User: Union[str, None] = None) -> Union[dict, None]:
|
||||
def database_get_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str,
|
||||
OnlyEnabled: bool = True,
|
||||
User: Union[str, None] = None) -> Union[dict, None]:
|
||||
""" retrieve sharing target and attributes by map """
|
||||
# Lookup
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
@@ -143,16 +143,16 @@ class Sharing(sharing.BaseSharing):
|
||||
"Properties": Properties}
|
||||
return None
|
||||
|
||||
def list_sharing(self,
|
||||
OwnerOrUser: Union[str, None] = None,
|
||||
ShareType: Union[str, None] = None,
|
||||
PathOrToken: Union[str, None] = None,
|
||||
PathMapped: Union[str, None] = None,
|
||||
User: Union[str, None] = None,
|
||||
EnabledByOwner: Union[bool, None] = None,
|
||||
EnabledByUser: Union[bool, None] = None,
|
||||
HiddenByOwner: Union[bool, None] = None,
|
||||
HiddenByUser: Union[bool, None] = None) -> list[dict]:
|
||||
def database_list_sharing(self,
|
||||
OwnerOrUser: Union[str, None] = None,
|
||||
ShareType: Union[str, None] = None,
|
||||
PathOrToken: Union[str, None] = None,
|
||||
PathMapped: Union[str, None] = None,
|
||||
User: Union[str, None] = None,
|
||||
EnabledByOwner: Union[bool, None] = None,
|
||||
EnabledByUser: Union[bool, None] = None,
|
||||
HiddenByOwner: Union[bool, None] = None,
|
||||
HiddenByUser: Union[bool, None] = None) -> list[dict]:
|
||||
""" retrieve sharing """
|
||||
row: dict
|
||||
index = 0
|
||||
@@ -201,15 +201,15 @@ class Sharing(sharing.BaseSharing):
|
||||
index += 1
|
||||
return result
|
||||
|
||||
def create_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str, PathMapped: str,
|
||||
Owner: str, User: str,
|
||||
Permissions: str = "r",
|
||||
EnabledByOwner: bool = False, EnabledByUser: bool = False,
|
||||
HiddenByOwner: bool = True, HiddenByUser: bool = True,
|
||||
Timestamp: int = 0,
|
||||
Properties: Union[dict, None] = None) -> dict:
|
||||
def database_create_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str, PathMapped: str,
|
||||
Owner: str, User: str,
|
||||
Permissions: str = "r",
|
||||
EnabledByOwner: bool = False, EnabledByUser: bool = False,
|
||||
HiddenByOwner: bool = True, HiddenByUser: bool = True,
|
||||
Timestamp: int = 0,
|
||||
Properties: Union[dict, None] = None) -> dict:
|
||||
""" create sharing """
|
||||
row: dict
|
||||
|
||||
@@ -264,19 +264,19 @@ class Sharing(sharing.BaseSharing):
|
||||
logger.error("sharing/%s/create: cannot update CSV database", ShareType)
|
||||
return {"status": "error"}
|
||||
|
||||
def update_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str,
|
||||
OwnerOrUser: Union[str, None] = None,
|
||||
User: Union[str, None] = None,
|
||||
PathMapped: Union[str, None] = None,
|
||||
Permissions: Union[str, None] = None,
|
||||
EnabledByOwner: Union[bool, None] = None,
|
||||
EnabledByUser: Union[bool, None] = None,
|
||||
HiddenByOwner: Union[bool, None] = None,
|
||||
HiddenByUser: Union[bool, None] = None,
|
||||
Timestamp: int = 0,
|
||||
Properties: Union[dict, None] = None) -> dict:
|
||||
def database_update_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str,
|
||||
OwnerOrUser: Union[str, None] = None,
|
||||
User: Union[str, None] = None,
|
||||
PathMapped: Union[str, None] = None,
|
||||
Permissions: Union[str, None] = None,
|
||||
EnabledByOwner: Union[bool, None] = None,
|
||||
EnabledByUser: Union[bool, None] = None,
|
||||
HiddenByOwner: Union[bool, None] = None,
|
||||
HiddenByUser: Union[bool, None] = None,
|
||||
Timestamp: int = 0,
|
||||
Properties: Union[dict, None] = None) -> dict:
|
||||
""" update sharing """
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("TRACE/sharing/%s/update: PathOrToken=%r OwnerOrUser=%r PathMapped=%r Properties=%r EnabledByOwner=%s EnabledByUser=%s HiddenByOwner=%s HiddenByUser=%s", ShareType, PathOrToken, OwnerOrUser, PathMapped, Properties, EnabledByOwner, EnabledByUser, HiddenByOwner, HiddenByUser)
|
||||
@@ -337,9 +337,9 @@ class Sharing(sharing.BaseSharing):
|
||||
else:
|
||||
return {"status": "not-found"}
|
||||
|
||||
def delete_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str) -> dict:
|
||||
def database_delete_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str) -> dict:
|
||||
""" delete sharing """
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("TRACE/sharing/%s/delete: PathOrToken=%r", ShareType, PathOrToken)
|
||||
|
||||
@@ -29,19 +29,19 @@ DB_VERSION: str = "1"
|
||||
|
||||
|
||||
class Sharing(sharing.BaseSharing):
|
||||
_sharing_db_path_ShareType: dict = {}
|
||||
_sharing_database_path_ShareType: dict = {}
|
||||
|
||||
# Overloaded functions
|
||||
def init_database(self) -> bool:
|
||||
def database_init(self) -> bool:
|
||||
logger.debug("sharing database initialization for type 'files'")
|
||||
sharing_db_path = self.configuration.get("sharing", "database_path")
|
||||
if sharing_db_path == "":
|
||||
sharing_database_path = self.configuration.get("sharing", "database_path")
|
||||
if sharing_database_path == "":
|
||||
folder = self.configuration.get("storage", "filesystem_folder")
|
||||
folder_db = os.path.join(folder, "collection-db")
|
||||
sharing_db_path = os.path.join(folder_db, "files")
|
||||
logger.info("sharing database path not provided, use default: %r", sharing_db_path)
|
||||
sharing_database_path = os.path.join(folder_db, "files")
|
||||
logger.info("sharing database path not provided, use default: %r", sharing_database_path)
|
||||
else:
|
||||
logger.info("sharing database path: %r", sharing_db_path)
|
||||
logger.info("sharing database path: %r", sharing_database_path)
|
||||
|
||||
if not os.path.exists(folder_db):
|
||||
logger.warning("sharing database folder is not existing: %r (create now)", folder_db)
|
||||
@@ -52,18 +52,18 @@ class Sharing(sharing.BaseSharing):
|
||||
return False
|
||||
logger.info("sharing database folder successfully created: %r", folder_db)
|
||||
|
||||
if not os.path.exists(sharing_db_path):
|
||||
logger.warning("sharing database path is not existing: %r", sharing_db_path)
|
||||
if not os.path.exists(sharing_database_path):
|
||||
logger.warning("sharing database path is not existing: %r", sharing_database_path)
|
||||
try:
|
||||
os.mkdir(sharing_db_path)
|
||||
os.mkdir(sharing_database_path)
|
||||
except Exception as e:
|
||||
logger.error("sharing database path cannot be created (check permissions): %r (%r)", sharing_db_path, e)
|
||||
logger.error("sharing database path cannot be created (check permissions): %r (%r)", sharing_database_path, e)
|
||||
return False
|
||||
logger.info("sharing database path successfully created: %r", sharing_db_path)
|
||||
logger.info("sharing database path successfully created: %r", sharing_database_path)
|
||||
|
||||
for ShareType in sharing.SHARE_TYPES_V1:
|
||||
path = os.path.join(sharing_db_path, ShareType)
|
||||
self._sharing_db_path_ShareType[ShareType] = path
|
||||
path = os.path.join(sharing_database_path, ShareType)
|
||||
self._sharing_database_path_ShareType[ShareType] = path
|
||||
if not os.path.exists(path):
|
||||
logger.warning("sharing database path for %r is not existing: %r", ShareType, path)
|
||||
try:
|
||||
@@ -74,29 +74,29 @@ class Sharing(sharing.BaseSharing):
|
||||
logger.info("sharing database path for %r successfully created: %r", ShareType, path)
|
||||
return True
|
||||
|
||||
def get_database_info(self) -> Union[dict, None]:
|
||||
def database_get_info(self) -> Union[dict, None]:
|
||||
database_info = {'type': "files"}
|
||||
return database_info
|
||||
|
||||
def verify_database(self) -> bool:
|
||||
def database_verify(self) -> bool:
|
||||
logger.info("sharing database (files) verification begin")
|
||||
for ShareType in sharing.SHARE_TYPES_V1:
|
||||
logger.info("sharing database (files) path for %r: %r", ShareType, self._sharing_db_path_ShareType[ShareType])
|
||||
logger.info("sharing database (files) path for %r: %r", ShareType, self._sharing_database_path_ShareType[ShareType])
|
||||
# TODO: count amount of files
|
||||
logger.info("sharing database (files) verification end")
|
||||
return True
|
||||
|
||||
def get_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str,
|
||||
OnlyEnabled: bool = True,
|
||||
User: Union[str, None] = None) -> Union[dict, None]:
|
||||
def database_get_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str,
|
||||
OnlyEnabled: bool = True,
|
||||
User: Union[str, None] = None) -> Union[dict, None]:
|
||||
""" retrieve sharing target and attributes by map """
|
||||
# Lookup
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("TRACE/sharing/%s/get: PathOrToken=%r User=%r)", ShareType, PathOrToken, User)
|
||||
|
||||
sharing_config_file = os.path.join(self._sharing_db_path_ShareType[ShareType], self._encode_path(PathOrToken))
|
||||
sharing_config_file = os.path.join(self._sharing_database_path_ShareType[ShareType], self._encode_path(PathOrToken))
|
||||
|
||||
if not os.path.isfile(sharing_config_file):
|
||||
return None
|
||||
@@ -141,16 +141,16 @@ class Sharing(sharing.BaseSharing):
|
||||
|
||||
return None
|
||||
|
||||
def list_sharing(self,
|
||||
OwnerOrUser: Union[str, None] = None,
|
||||
ShareType: Union[str, None] = None,
|
||||
PathOrToken: Union[str, None] = None,
|
||||
PathMapped: Union[str, None] = None,
|
||||
User: Union[str, None] = None,
|
||||
EnabledByOwner: Union[bool, None] = None,
|
||||
EnabledByUser: Union[bool, None] = None,
|
||||
HiddenByOwner: Union[bool, None] = None,
|
||||
HiddenByUser: Union[bool, None] = None) -> list[dict]:
|
||||
def database_list_sharing(self,
|
||||
OwnerOrUser: Union[str, None] = None,
|
||||
ShareType: Union[str, None] = None,
|
||||
PathOrToken: Union[str, None] = None,
|
||||
PathMapped: Union[str, None] = None,
|
||||
User: Union[str, None] = None,
|
||||
EnabledByOwner: Union[bool, None] = None,
|
||||
EnabledByUser: Union[bool, None] = None,
|
||||
HiddenByOwner: Union[bool, None] = None,
|
||||
HiddenByUser: Union[bool, None] = None) -> list[dict]:
|
||||
""" retrieve sharing """
|
||||
result = []
|
||||
|
||||
@@ -162,7 +162,7 @@ class Sharing(sharing.BaseSharing):
|
||||
# skip
|
||||
continue
|
||||
|
||||
path = self._sharing_db_path_ShareType[_ShareType]
|
||||
path = self._sharing_database_path_ShareType[_ShareType]
|
||||
with self._storage.acquire_lock("r", OwnerOrUser, path=path):
|
||||
for entry in os.scandir(path):
|
||||
if not entry.is_file():
|
||||
@@ -213,19 +213,19 @@ class Sharing(sharing.BaseSharing):
|
||||
|
||||
return result
|
||||
|
||||
def create_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str, PathMapped: str,
|
||||
Owner: str, User: str,
|
||||
Permissions: str = "r",
|
||||
EnabledByOwner: bool = False, EnabledByUser: bool = False,
|
||||
HiddenByOwner: bool = True, HiddenByUser: bool = True,
|
||||
Timestamp: int = 0,
|
||||
Properties: Union[dict, None] = None) -> dict:
|
||||
def database_create_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str, PathMapped: str,
|
||||
Owner: str, User: str,
|
||||
Permissions: str = "r",
|
||||
EnabledByOwner: bool = False, EnabledByUser: bool = False,
|
||||
HiddenByOwner: bool = True, HiddenByUser: bool = True,
|
||||
Timestamp: int = 0,
|
||||
Properties: Union[dict, None] = None) -> dict:
|
||||
""" create sharing """
|
||||
row: dict
|
||||
|
||||
sharing_config_file = os.path.join(self._sharing_db_path_ShareType[ShareType], self._encode_path(PathOrToken))
|
||||
sharing_config_file = os.path.join(self._sharing_database_path_ShareType[ShareType], self._encode_path(PathOrToken))
|
||||
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("TRACE/sharing/%s/create: sharing_config_file=%r", ShareType, sharing_config_file)
|
||||
@@ -262,24 +262,24 @@ class Sharing(sharing.BaseSharing):
|
||||
logger.error("sharing/%s/create: cannot store share-config: %r (%r)", ShareType, sharing_config_file, e)
|
||||
return {"status": "error"}
|
||||
|
||||
def update_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str,
|
||||
OwnerOrUser: Union[str, None] = None,
|
||||
User: Union[str, None] = None,
|
||||
PathMapped: Union[str, None] = None,
|
||||
Permissions: Union[str, None] = None,
|
||||
EnabledByOwner: Union[bool, None] = None,
|
||||
EnabledByUser: Union[bool, None] = None,
|
||||
HiddenByOwner: Union[bool, None] = None,
|
||||
HiddenByUser: Union[bool, None] = None,
|
||||
Timestamp: int = 0,
|
||||
Properties: Union[dict, None] = None) -> dict:
|
||||
def database_update_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str,
|
||||
OwnerOrUser: Union[str, None] = None,
|
||||
User: Union[str, None] = None,
|
||||
PathMapped: Union[str, None] = None,
|
||||
Permissions: Union[str, None] = None,
|
||||
EnabledByOwner: Union[bool, None] = None,
|
||||
EnabledByUser: Union[bool, None] = None,
|
||||
HiddenByOwner: Union[bool, None] = None,
|
||||
HiddenByUser: Union[bool, None] = None,
|
||||
Timestamp: int = 0,
|
||||
Properties: Union[dict, None] = None) -> dict:
|
||||
""" update sharing """
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("TRACE/sharing/%s/update: PathOrToken=%r OwnerOrUser=%r User=%r Properties=%r", ShareType, PathOrToken, OwnerOrUser, User, Properties)
|
||||
|
||||
sharing_config_file = os.path.join(self._sharing_db_path_ShareType[ShareType], self._encode_path(PathOrToken))
|
||||
sharing_config_file = os.path.join(self._sharing_database_path_ShareType[ShareType], self._encode_path(PathOrToken))
|
||||
|
||||
if not os.path.isfile(sharing_config_file):
|
||||
return {"status": "not-found"}
|
||||
@@ -331,14 +331,14 @@ class Sharing(sharing.BaseSharing):
|
||||
logger.error("sharing/%s/create: cannot store share-config: %r (%r)", ShareType, sharing_config_file, e)
|
||||
return {"status": "error"}
|
||||
|
||||
def delete_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str) -> dict:
|
||||
def database_delete_sharing(self,
|
||||
ShareType: str,
|
||||
PathOrToken: str) -> dict:
|
||||
""" delete sharing """
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("TRACE/sharing/%s/delete: PathOrToken=%r", ShareType, PathOrToken)
|
||||
|
||||
sharing_config_file = os.path.join(self._sharing_db_path_ShareType[ShareType], self._encode_path(PathOrToken))
|
||||
sharing_config_file = os.path.join(self._sharing_database_path_ShareType[ShareType], self._encode_path(PathOrToken))
|
||||
|
||||
if not os.path.isfile(sharing_config_file):
|
||||
return {"status": "not-found"}
|
||||
|
||||
@@ -470,7 +470,7 @@ class TestSharingApiSanity(BaseTest):
|
||||
assert "Status=success" in answer
|
||||
assert "Lines=1" in answer
|
||||
|
||||
logging.info("\n*** disable token#2 as iwner (form->text)")
|
||||
logging.info("\n*** disable token#2 as owner (form->text)")
|
||||
form_array = ["PathOrToken=" + token2]
|
||||
_, headers, answer = self._sharing_api_form("token", "disable", check=200, login="owner:ownerpw", form_array=form_array)
|
||||
assert "Status=success" in answer
|
||||
|
||||
Reference in New Issue
Block a user