annotate src/plugins/plugin_misc_debug.py @ 2532:772447ec070f

jp: pubsub options refactoring: There is now only "use_pubsub", and specification are set using "pubsub_flags" argument when instantiating CommandBase. Options are more Python Zen compliant by using explicit arguments for item, draft, url instead of trying to guess with magic keyword and type detection. Pubsub node and item are now always using respecively "-n" and "-i" even when required, this way shell history can be used to change command more easily, and it's globally less confusing for user. if --pubsub-url is used, elements can be overwritten with individual option (e.g. change item id with --item). New "use_draft" argument in CommandBase, to re-use current draft or open a file path as draft. Item can now be specified when using a draft. If it already exists, its content will be added to current draft (with a separator), to avoid loosing data. common.BaseEdit.getItemPath could be simplified thanks to those changes. Pubsub URI handling has been moved to base.py.
author Goffi <goffi@goffi.org>
date Wed, 21 Mar 2018 19:13:22 +0100
parents 33c8c4973743
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2037
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/env python2
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
3
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # SàT plugin for managing raw XML log
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
5 # Copyright (C) 2009-2016 Jérôme Poisson (goffi@goffi.org)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
6
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # This program is free software: you can redistribute it and/or modify
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # 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
9 # the Free Software Foundation, either version 3 of the License, or
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
10 # (at your option) any later version.
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
11
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # This program is distributed in the hope that it will be useful,
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
15 # GNU Affero General Public License for more details.
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
16
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # 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
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
19
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
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
22 log = getLogger(__name__)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
23 from sat.core.constants import Const as C
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
24 import json
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
25
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
26 PLUGIN_INFO = {
2145
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
27 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
28 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
29 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
30 C.PI_PROTOCOLS: [],
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
31 C.PI_DEPENDENCIES: [],
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
32 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
33 C.PI_HANDLER: "no",
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
34 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
35 }
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 class Debug(object):
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
39
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
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
43 host.bridge.addMethod("debugFakeSignal", ".plugin", in_sign='sss', out_sign='', method=self._fakeSignal)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
44
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
45
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
46 def _fakeSignal(self, signal, arguments, profile_key):
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
47 """send a signal from backend
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
48
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
49 @param signal(str): name of the signal
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
50 @param arguments(unicode): json encoded list of arguments
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
51 @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
52 """
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
53 args = json.loads(arguments)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
54 method = getattr(self.host.bridge, signal)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
55 if profile_key != C.PROF_KEY_NONE:
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
56 profile = self.host.memory.getProfileName(profile_key)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
57 args.append(profile)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
58 method(*args)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
59
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
60
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
61