annotate sat/plugins/plugin_misc_debug.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 2b0f739f8a46
children 524856bd7b19
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2624
diff changeset
1 #!/usr/bin/env python3
2037
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
2
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
3 # SàT plugin for managing raw XML log
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # Copyright (C) 2009-2016 Jérôme Poisson (goffi@goffi.org)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
5
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
6 # This program is free software: you can redistribute it and/or modify
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # it under the terms of the GNU Affero General Public License as published by
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # the Free Software Foundation, either version 3 of the License, or
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # (at your option) any later version.
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
10
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
11 # This program is distributed in the hope that it will be useful,
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # GNU Affero General Public License for more details.
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
15
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
16 # You should have received a copy of the GNU Affero General Public License
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
18
3126
2b0f739f8a46 plugin manhole: added "C" to namespace
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
19 import json
2037
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
20 from sat.core.i18n import _
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
21 from sat.core.log import getLogger
3126
2b0f739f8a46 plugin manhole: added "C" to namespace
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
22 from sat.core.constants import Const as C
2b0f739f8a46 plugin manhole: added "C" to namespace
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
23
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
24
2037
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
25 log = getLogger(__name__)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
26
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
27 PLUGIN_INFO = {
2145
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
28 C.PI_NAME: "Debug Plugin",
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
29 C.PI_IMPORT_NAME: "DEBUG",
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
30 C.PI_TYPE: "Misc",
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
31 C.PI_PROTOCOLS: [],
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
32 C.PI_DEPENDENCIES: [],
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
33 C.PI_MAIN: "Debug",
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
34 C.PI_HANDLER: "no",
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
35 C.PI_DESCRIPTION: _("""Set of method to make development and debugging easier"""),
2037
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
36 }
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
37
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
38
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
39 class Debug(object):
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
40 def __init__(self, host):
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
41 log.info(_("Plugin Debug initialization"))
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
42 self.host = host
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
43 host.bridge.addMethod(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
44 "debugFakeSignal",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
45 ".plugin",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
46 in_sign="sss",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
47 out_sign="",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
48 method=self._fakeSignal,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
49 )
2037
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
50
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
51 def _fakeSignal(self, signal, arguments, profile_key):
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
52 """send a signal from backend
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
53
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
54 @param signal(str): name of the signal
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
55 @param arguments(unicode): json encoded list of arguments
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
56 @parm profile_key(unicode): profile_key to use or C.PROF_KEY_NONE if profile is not needed
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
57 """
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
58 args = json.loads(arguments)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
59 method = getattr(self.host.bridge, signal)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
60 if profile_key != C.PROF_KEY_NONE:
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
61 profile = self.host.memory.getProfileName(profile_key)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
62 args.append(profile)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
63 method(*args)