Mercurial > libervia-backend
diff sat/plugins/plugin_comp_file_sharing_management.py @ 3529:698579bedd6f
component file sharing (plugin management): new command to get available quota/used space.
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 05 May 2021 15:37:33 +0200 |
parents | be6d91572633 |
children | a8259a1f89b2 |
line wrap: on
line diff
--- a/sat/plugins/plugin_comp_file_sharing_management.py Wed May 05 15:37:33 2021 +0200 +++ b/sat/plugins/plugin_comp_file_sharing_management.py Wed May 05 15:37:33 2021 +0200 @@ -23,6 +23,7 @@ from sat.core import exceptions from sat.core.constants import Const as C from sat.core.log import getLogger +from sat.tools.common import utils from wokkel import data_form from twisted.internet import defer from twisted.words.protocols.jabber import jid @@ -50,6 +51,7 @@ NS_FILE_MANAGEMENT_PERM = "https://salut-a-toi.org/protocol/file-management:0#perm" NS_FILE_MANAGEMENT_DELETE = "https://salut-a-toi.org/protocol/file-management:0#delete" NS_FILE_MANAGEMENT_THUMB = "https://salut-a-toi.org/protocol/file-management:0#thumb" +NS_FILE_MANAGEMENT_QUOTA = "https://salut-a-toi.org/protocol/file-management:0#quota" class WorkflowError(Exception): @@ -98,6 +100,11 @@ node=NS_FILE_MANAGEMENT_THUMB, allowed_magics=C.ENTITY_ALL, ) + self._c.addAdHocCommand( + client, self._onQuota, "Get Quota", + node=NS_FILE_MANAGEMENT_QUOTA, + allowed_magics=C.ENTITY_ALL, + ) def _delete(self, service_jid_s, path, namespace, profile): client = self.host.getClient(profile) @@ -458,3 +465,24 @@ payload = None note = (self._c.NOTE.INFO, _("thumbnails generated")) defer.returnValue((payload, status, None, note)) + + async def _onQuota(self, client, command_elt, session_data, action, node): + requestor = session_data['requestor'] + quota = self.host.plugins["file_sharing"].getQuota(client, requestor) + try: + size_used = await self.host.memory.fileGetUsedSpace(client, requestor) + except exceptions.PermissionError: + raise WorkflowError(self._err(_("forbidden"))) + status = self._c.STATUS.COMPLETED + payload = None + note = ( + self._c.NOTE.INFO, + _("You are currently using {size_used} on {size_quota}").format( + size_used = utils.getHumanSize(size_used), + size_quota = ( + _("unlimited quota") if quota is None + else utils.getHumanSize(quota) + ) + ) + ) + return (payload, status, None, note)