diff sat/plugins/plugin_misc_file.py @ 3528:849374e59178

component file sharing: quotas implementation: quotas can now be specified using the `quotas_json` option of `component file_sharing` section in settings. This must be a dict where: - `users` key contains default quotas for all users - `admins` key contains quotas for administrators (not implemented yet) - `jids` contain bare JID to quota mapping, to have user-specific quota The value can be either a int for quota in bytes, or a case insensitive string with an optional multiplier symbol (e.g. "500 Mio"). `None` can be used for explicit unlimited quota (which is the default is `users` is not set). When a file size is too big for quota, upload is refused with an error message indicating allowed quota, used space, and the size of the file that user wants to upload.
author Goffi <goffi@goffi.org>
date Wed, 05 May 2021 15:37:33 +0200
parents 584379473925
children ca980569318c
line wrap: on
line diff
--- a/sat/plugins/plugin_misc_file.py	Wed May 05 15:37:33 2021 +0200
+++ b/sat/plugins/plugin_misc_file.py	Wed May 05 15:37:33 2021 +0200
@@ -266,7 +266,9 @@
                     )
                     return True
                 else:
-                    return self.getDestDir(client, peer_jid, transfer_data, file_data)
+                    return defer.ensureDeferred(
+                        self.getDestDir(client, peer_jid, transfer_data, file_data)
+                    )
 
             exists_d = xml_tools.deferConfirm(
                 self.host,
@@ -286,7 +288,9 @@
         self.openFileWrite(client, file_path, transfer_data, file_data, stream_object)
         return True
 
-    def getDestDir(self, client, peer_jid, transfer_data, file_data, stream_object=False):
+    async def getDestDir(
+        self, client, peer_jid, transfer_data, file_data, stream_object=False
+    ):
         """Request confirmation and destination dir to user
 
         Overwrite confirmation is managed.
@@ -313,7 +317,7 @@
             a stream.FileStreamObject will be used
         return (defer.Deferred): True if transfer is accepted
         """
-        cont, ret_value = self.host.trigger.returnPoint(
+        cont, ret_value = await self.host.trigger.asyncReturnPoint(
             "FILE_getDestDir", client, peer_jid, transfer_data, file_data, stream_object
         )
         if not cont: