core (memory): setFileAccessModel implementation:

this method let change read permission using access model similar to what is used with
Pubsub.
This commit is contained in:
Goffi 2020-08-01 16:07:39 +02:00
commit ea5e0a46f5

View file

@ -1409,6 +1409,47 @@ class Memory(object):
),
)
def _setFileAccessModelUpdate(
self,
access: dict,
file_data: dict,
access_model: str
) -> None:
read_data = access.setdefault(C.ACCESS_PERM_READ, {})
if access_model == "open":
requested_type = C.ACCESS_TYPE_PUBLIC
elif access_model == "whitelist":
requested_type = C.ACCESS_TYPE_WHITELIST
else:
raise ValueError(f"unknown access model: {access_model}")
read_data['type'] = requested_type
if requested_type == C.ACCESS_TYPE_WHITELIST and 'jids' not in read_data:
read_data['jids'] = []
async def setFileAccessModel(
self,
client,
file_data: dict,
access_model: str,
) -> None:
"""Apply pubsub like access_model to file_data
Only 2 access models are supported so far:
- "open": set public access to file/dir
- "whitelist": set whitelist to file/dir
"""
file_id = file_data['id']
await self.fileUpdate(
file_id,
'access',
update_cb=partial(
self._setFileAccessModelUpdate,
file_data=file_data,
access_model=access_model
),
)
@defer.inlineCallbacks
def getFiles(
self, client, peer_jid, file_id=None, version=None, parent=None, path=None,