cmis: extract _get_metadata method (#73466)

This commit is contained in:
Emmanuel Cazenave 2023-01-17 17:07:21 +01:00
parent 99e4c00f86
commit 51d1a1eb0e
1 changed files with 18 additions and 16 deletions

View File

@ -164,6 +164,23 @@ class CmisConnector(BaseResource):
return False, '', data
def _get_metadata(self, object_id):
with self.get_cmis_gateway() as cmis_gateway:
if '/' in object_id:
doc = cmis_gateway.get_object_by_path(object_id)
else:
doc = cmis_gateway.get_object(object_id)
metadata = {}
for key, value in doc.properties.items():
sub_metadata = metadata
for subkey in key.split(':')[:-1]:
if subkey not in sub_metadata:
sub_metadata[subkey] = {}
sub_metadata = sub_metadata[subkey]
sub_metadata[key.split(':')[-1]] = value
return metadata
@endpoint(
description=_('Get file'),
perm='can_access',
@ -196,22 +213,7 @@ class CmisConnector(BaseResource):
},
)
def getmetadata(self, request, object_id):
with self.get_cmis_gateway() as cmis_gateway:
if '/' in object_id:
doc = cmis_gateway.get_object_by_path(object_id)
else:
doc = cmis_gateway.get_object(object_id)
metadata = {}
for key, value in doc.properties.items():
sub_metadata = metadata
for subkey in key.split(':')[:-1]:
if subkey not in sub_metadata:
sub_metadata[subkey] = {}
sub_metadata = sub_metadata[subkey]
sub_metadata[key.split(':')[-1]] = value
return {'data': metadata}
return {'data': self._get_metadata(object_id)}
def wrap_cmis_error(f):