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:
parent
97375ee1db
commit
ea5e0a46f5
1 changed files with 41 additions and 0 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue