annotate sat/memory/params.py @ 2646:712cb4ff3e13

core: new EncryptionHandler class which manage encrypted session as a core feature: Plugin handling encryption can now register using host.registerEncryptionPlugin, and an encryption session can now be started using messageEncryptionStart bridge method. This will make encryption handling more easy, as we now know if a session is clear or e2e encrypted, and which plugin handle it.
author Goffi <goffi@goffi.org>
date Sun, 29 Jul 2018 19:22:56 +0200
parents 56f94936df1e
children e9cd473a2f46
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1934
2daf7b4c6756 use of /usr/bin/env instead of /usr/bin/python in shebang
Goffi <goffi@goffi.org>
parents: 1931
diff changeset
1 #!/usr/bin/env python2
0
goffi@necton2
parents:
diff changeset
2 # -*- coding: utf-8 -*-
goffi@necton2
parents:
diff changeset
3
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 592
diff changeset
4 # SAT: a jabber client
2483
0046283a285d dates update
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
5 # Copyright (C) 2009-2018 Jérôme Poisson (goffi@goffi.org)
0
goffi@necton2
parents:
diff changeset
6
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 592
diff changeset
7 # This program is free software: you can redistribute it and/or modify
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 592
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 592
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 592
diff changeset
10 # (at your option) any later version.
0
goffi@necton2
parents:
diff changeset
11
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 592
diff changeset
12 # This program is distributed in the hope that it will be useful,
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 592
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 592
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 592
diff changeset
15 # GNU Affero General Public License for more details.
0
goffi@necton2
parents:
diff changeset
16
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 592
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 592
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
0
goffi@necton2
parents:
diff changeset
19
1222
e6e0ea4dc835 memory: add Parameter "Chat history limit"
souliane <souliane@mailoo.org>
parents: 1220
diff changeset
20 from sat.core.i18n import _, D_
0
goffi@necton2
parents:
diff changeset
21
914
1a3ba959f0ab core (memory): moved Params in its own module + introduced a new core/constants module, and moved some constants there
Goffi <goffi@goffi.org>
parents: 909
diff changeset
22 from sat.core import exceptions
1a3ba959f0ab core (memory): moved Params in its own module + introduced a new core/constants module, and moved some constants there
Goffi <goffi@goffi.org>
parents: 909
diff changeset
23 from sat.core.constants import Const as C
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
24 from sat.memory.crypto import BlockCipher, PasswordHasher
968
75f3b3b430ff tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents: 944
diff changeset
25 from xml.dom import minidom, NotFoundErr
993
301b342c697a core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents: 968
diff changeset
26 from sat.core.log import getLogger
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
27
993
301b342c697a core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents: 968
diff changeset
28 log = getLogger(__name__)
914
1a3ba959f0ab core (memory): moved Params in its own module + introduced a new core/constants module, and moved some constants there
Goffi <goffi@goffi.org>
parents: 909
diff changeset
29 from twisted.internet import defer
645
17bd09cd1001 core: misc bug fixes
Goffi <goffi@goffi.org>
parents: 643
diff changeset
30 from twisted.python.failure import Failure
1744
9a48e09044eb plugin extra_pep, params: fixed insecure building of jids_list
Goffi <goffi@goffi.org>
parents: 1740
diff changeset
31 from twisted.words.xish import domish
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
32 from twisted.words.protocols.jabber import jid
1740
681fe91abcc0 memory (params): parameter jids_list values are specified with <jid>...</jid>
souliane <souliane@mailoo.org>
parents: 1739
diff changeset
33 from sat.tools.xml_tools import paramsXML2XMLUI, getText
756
efa0e0f57950 core (memory): new Sessions management class (similar to dict)
Goffi <goffi@goffi.org>
parents: 751
diff changeset
34
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
35 # TODO: params should be rewritten using Twisted directly instead of minidom
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
36 # general params should be linked to sat.conf and kept synchronised
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
37 # this need an overall simplification to make maintenance easier
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
38
756
efa0e0f57950 core (memory): new Sessions management class (similar to dict)
Goffi <goffi@goffi.org>
parents: 751
diff changeset
39
1744
9a48e09044eb plugin extra_pep, params: fixed insecure building of jids_list
Goffi <goffi@goffi.org>
parents: 1740
diff changeset
40 def createJidElts(jids):
9a48e09044eb plugin extra_pep, params: fixed insecure building of jids_list
Goffi <goffi@goffi.org>
parents: 1740
diff changeset
41 """Generator which return <jid/> elements from jids
9a48e09044eb plugin extra_pep, params: fixed insecure building of jids_list
Goffi <goffi@goffi.org>
parents: 1740
diff changeset
42
9a48e09044eb plugin extra_pep, params: fixed insecure building of jids_list
Goffi <goffi@goffi.org>
parents: 1740
diff changeset
43 @param jids(iterable[id.jID]): jids to use
9a48e09044eb plugin extra_pep, params: fixed insecure building of jids_list
Goffi <goffi@goffi.org>
parents: 1740
diff changeset
44 @return (generator[domish.Element]): <jid/> elements
9a48e09044eb plugin extra_pep, params: fixed insecure building of jids_list
Goffi <goffi@goffi.org>
parents: 1740
diff changeset
45 """
9a48e09044eb plugin extra_pep, params: fixed insecure building of jids_list
Goffi <goffi@goffi.org>
parents: 1740
diff changeset
46 for jid_ in jids:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
47 jid_elt = domish.Element((None, "jid"))
1744
9a48e09044eb plugin extra_pep, params: fixed insecure building of jids_list
Goffi <goffi@goffi.org>
parents: 1740
diff changeset
48 jid_elt.addContent(jid_.full())
9a48e09044eb plugin extra_pep, params: fixed insecure building of jids_list
Goffi <goffi@goffi.org>
parents: 1740
diff changeset
49 yield jid_elt
9a48e09044eb plugin extra_pep, params: fixed insecure building of jids_list
Goffi <goffi@goffi.org>
parents: 1740
diff changeset
50
9a48e09044eb plugin extra_pep, params: fixed insecure building of jids_list
Goffi <goffi@goffi.org>
parents: 1740
diff changeset
51
588
beaf6bec2fcd Remove every old-style class.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 587
diff changeset
52 class Params(object):
65
d35c5edab53f SàT: multi-profile: memory & dbus bridge's methods profile management
Goffi <goffi@goffi.org>
parents: 64
diff changeset
53 """This class manage parameters with xml"""
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
54
19
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
55 ### TODO: add desciption in params
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
56
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
57 # TODO: when priority is changed, a new presence stanza must be emitted
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
58 # TODO: int type (Priority should be int instead of string)
34
a544b376b6f0 use proper utf-8 encoding for parsing xml in parameters
Goffi <goffi@goffi.org>
parents: 22
diff changeset
59 default_xml = u"""
17
74a39f40eb6d refactoring: using xml params (not finished yet)
Goffi <goffi@goffi.org>
parents: 14
diff changeset
60 <params>
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
61 <general>
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
62 </general>
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
63 <individual>
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
64 <category name="General" label="%(category_general)s">
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
65 <param name="Password" value="" type="password" />
1226
72f25d671368 memory (params): use more generic param attribute "constraint" instead of "min" and "max"
souliane <souliane@mailoo.org>
parents: 1222
diff changeset
66 <param name="%(history_param)s" label="%(history_label)s" value="20" constraint="0;100" type="int" security="0" />
1227
4da2e4d58bd0 memory (params): add parameters "Show offline contacts" and "Show empty groups"
souliane <souliane@mailoo.org>
parents: 1226
diff changeset
67 <param name="%(show_offline_contacts)s" label="%(show_offline_contacts_label)s" value="false" type="bool" security="0" />
1238
ff58a49a7022 memory (params): set "Show empty groups" to True by default
souliane <souliane@mailoo.org>
parents: 1227
diff changeset
68 <param name="%(show_empty_groups)s" label="%(show_empty_groups_label)s" value="true" type="bool" security="0" />
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
69 </category>
183
9ee4a1d0d7fb Added auto(dis)connect params + misc
Goffi <goffi@goffi.org>
parents: 182
diff changeset
70 <category name="Connection" label="%(category_connection)s">
1647
31b96ac3eec2 core (param), plugin file: set security_limit for acount changes, backend (dis)connection, and put a higher one for file send
Goffi <goffi@goffi.org>
parents: 1624
diff changeset
71 <param name="JabberID" value="name@example.org" type="string" security="10" />
31b96ac3eec2 core (param), plugin file: set security_limit for acount changes, backend (dis)connection, and put a higher one for file send
Goffi <goffi@goffi.org>
parents: 1624
diff changeset
72 <param name="Password" value="" type="password" security="10" />
31b96ac3eec2 core (param), plugin file: set security_limit for acount changes, backend (dis)connection, and put a higher one for file send
Goffi <goffi@goffi.org>
parents: 1624
diff changeset
73 <param name="Priority" value="50" type="int" constraint="-128;127" security="10" />
31b96ac3eec2 core (param), plugin file: set security_limit for acount changes, backend (dis)connection, and put a higher one for file send
Goffi <goffi@goffi.org>
parents: 1624
diff changeset
74 <param name="%(force_server_param)s" value="" type="string" security="50" />
31b96ac3eec2 core (param), plugin file: set security_limit for acount changes, backend (dis)connection, and put a higher one for file send
Goffi <goffi@goffi.org>
parents: 1624
diff changeset
75 <param name="%(force_port_param)s" value="" type="int" constraint="1;65535" security="50" />
31b96ac3eec2 core (param), plugin file: set security_limit for acount changes, backend (dis)connection, and put a higher one for file send
Goffi <goffi@goffi.org>
parents: 1624
diff changeset
76 <param name="autoconnect" label="%(autoconnect_label)s" value="true" type="bool" security="50" />
31b96ac3eec2 core (param), plugin file: set security_limit for acount changes, backend (dis)connection, and put a higher one for file send
Goffi <goffi@goffi.org>
parents: 1624
diff changeset
77 <param name="autodisconnect" label="%(autodisconnect_label)s" value="false" type="bool" security="50" />
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
78 </category>
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
79 </individual>
17
74a39f40eb6d refactoring: using xml params (not finished yet)
Goffi <goffi@goffi.org>
parents: 14
diff changeset
80 </params>
592
e5a875a3311b Fix pep8 support in src/memory.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
81 """ % {
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
82 "category_general": D_("General"),
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
83 "category_connection": D_("Connection"),
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
84 "history_param": C.HISTORY_LIMIT,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
85 "history_label": D_("Chat history limit"),
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
86 "show_offline_contacts": C.SHOW_OFFLINE_CONTACTS,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
87 "show_offline_contacts_label": D_("Show offline contacts"),
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
88 "show_empty_groups": C.SHOW_EMPTY_GROUPS,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
89 "show_empty_groups_label": D_("Show empty groups"),
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
90 "force_server_param": C.FORCE_SERVER_PARAM,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
91 "force_port_param": C.FORCE_PORT_PARAM,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
92 "new_account_label": D_("Register new account"),
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
93 "autoconnect_label": D_("Connect on frontend startup"),
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
94 "autodisconnect_label": D_("Disconnect on frontend closure"),
592
e5a875a3311b Fix pep8 support in src/memory.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
95 }
17
74a39f40eb6d refactoring: using xml params (not finished yet)
Goffi <goffi@goffi.org>
parents: 14
diff changeset
96
74a39f40eb6d refactoring: using xml params (not finished yet)
Goffi <goffi@goffi.org>
parents: 14
diff changeset
97 def load_default_params(self):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
98 self.dom = minidom.parseString(Params.default_xml.encode("utf-8"))
38
3e24753b9e0b Fixed parameters loading/saving
Goffi <goffi@goffi.org>
parents: 34
diff changeset
99
557
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
100 def _mergeParams(self, source_node, dest_node):
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
101 """Look for every node in source_node and recursively copy them to dest if they don't exists"""
592
e5a875a3311b Fix pep8 support in src/memory.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
102
557
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
103 def getNodesMap(children):
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
104 ret = {}
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
105 for child in children:
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
106 if child.nodeType == child.ELEMENT_NODE:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
107 ret[(child.tagName, child.getAttribute("name"))] = child
557
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
108 return ret
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
109
557
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
110 source_map = getNodesMap(source_node.childNodes)
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
111 dest_map = getNodesMap(dest_node.childNodes)
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
112 source_set = set(source_map.keys())
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
113 dest_set = set(dest_map.keys())
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
114 to_add = source_set.difference(dest_set)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
115
557
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
116 for node_key in to_add:
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
117 dest_node.appendChild(source_map[node_key].cloneNode(True))
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
118
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
119 to_recurse = source_set - to_add
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
120 for node_key in to_recurse:
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
121 self._mergeParams(source_map[node_key], dest_map[node_key])
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
122
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
123 def load_xml(self, xml_file):
1015
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents: 993
diff changeset
124 """Load parameters template from xml file"""
557
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
125 self.dom = minidom.parse(xml_file)
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
126 default_dom = minidom.parseString(Params.default_xml.encode("utf-8"))
557
4f856dd4c0d0 core: paramaters are now merged: if a parameter doens't exist in loaded xml but exists in default parameters, it is added
Goffi <goffi@goffi.org>
parents: 556
diff changeset
127 self._mergeParams(default_dom.documentElement, self.dom.documentElement)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
128
416
32dc8b18c2ae core: param loading/purging on profile connection/disconnection
Goffi <goffi@goffi.org>
parents: 413
diff changeset
129 def loadGenParams(self):
412
62b17854254e database integration: first draft
Goffi <goffi@goffi.org>
parents: 399
diff changeset
130 """Load general parameters data from storage
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
131
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
132 @return: deferred triggered once params are loaded
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
133 """
413
dd4caab17008 core: - individual parameters managed through sqlite
Goffi <goffi@goffi.org>
parents: 412
diff changeset
134 return self.storage.loadGenParams(self.params_gen)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
135
423
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
136 def loadIndParams(self, profile, cache=None):
412
62b17854254e database integration: first draft
Goffi <goffi@goffi.org>
parents: 399
diff changeset
137 """Load individual parameters
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
138
423
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
139 set self.params cache or a temporary cache
412
62b17854254e database integration: first draft
Goffi <goffi@goffi.org>
parents: 399
diff changeset
140 @param profile: profile to load (*must exist*)
423
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
141 @param cache: if not None, will be used to store the value, as a short time cache
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
142 @return: deferred triggered once params are loaded
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
143 """
592
e5a875a3311b Fix pep8 support in src/memory.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
144 if cache is None:
423
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
145 self.params[profile] = {}
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
146 return self.storage.loadIndParams(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
147 self.params[profile] if cache is None else cache, profile
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
148 )
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
149
416
32dc8b18c2ae core: param loading/purging on profile connection/disconnection
Goffi <goffi@goffi.org>
parents: 413
diff changeset
150 def purgeProfile(self, profile):
32dc8b18c2ae core: param loading/purging on profile connection/disconnection
Goffi <goffi@goffi.org>
parents: 413
diff changeset
151 """Remove cache data of a profile
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
152
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
153 @param profile: %(doc_profile)s
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
154 """
416
32dc8b18c2ae core: param loading/purging on profile connection/disconnection
Goffi <goffi@goffi.org>
parents: 413
diff changeset
155 try:
32dc8b18c2ae core: param loading/purging on profile connection/disconnection
Goffi <goffi@goffi.org>
parents: 413
diff changeset
156 del self.params[profile]
32dc8b18c2ae core: param loading/purging on profile connection/disconnection
Goffi <goffi@goffi.org>
parents: 413
diff changeset
157 except KeyError:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
158 log.error(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
159 _(u"Trying to purge cache of a profile not in memory: [%s]") % profile
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
160 )
416
32dc8b18c2ae core: param loading/purging on profile connection/disconnection
Goffi <goffi@goffi.org>
parents: 413
diff changeset
161
592
e5a875a3311b Fix pep8 support in src/memory.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
162 def save_xml(self, filename):
61
58d49fc19639 parameters are saved again
Goffi <goffi@goffi.org>
parents: 60
diff changeset
163 """Save parameters template to xml file"""
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
164 with open(filename, "wb") as xml_file:
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
165 xml_file.write(self.dom.toxml("utf-8"))
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
166
413
dd4caab17008 core: - individual parameters managed through sqlite
Goffi <goffi@goffi.org>
parents: 412
diff changeset
167 def __init__(self, host, storage):
993
301b342c697a core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents: 968
diff changeset
168 log.debug("Parameters init")
22
bb72c29f3432 added action cb mechanism for buttons. Tested with a temporary new user registration button.
Goffi <goffi@goffi.org>
parents: 21
diff changeset
169 self.host = host
413
dd4caab17008 core: - individual parameters managed through sqlite
Goffi <goffi@goffi.org>
parents: 412
diff changeset
170 self.storage = storage
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
171 self.default_profile = None
182
556c2bd7c344 Primitivus now implement showDialog + new "newAlert" bridge method to show a dialog from core
Goffi <goffi@goffi.org>
parents: 166
diff changeset
172 self.params = {}
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
173 self.params_gen = {}
19
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
174
2144
1d3f73e065e1 core, jp: component handling + client handling refactoring:
Goffi <goffi@goffi.org>
parents: 1934
diff changeset
175 def createProfile(self, profile, component):
420
acd908528ef7 core: profile creation/deletion through database
Goffi <goffi@goffi.org>
parents: 418
diff changeset
176 """Create a new profile
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
177
2144
1d3f73e065e1 core, jp: component handling + client handling refactoring:
Goffi <goffi@goffi.org>
parents: 1934
diff changeset
178 @param profile(unicode): name of the profile
1d3f73e065e1 core, jp: component handling + client handling refactoring:
Goffi <goffi@goffi.org>
parents: 1934
diff changeset
179 @param component(unicode): entry point if profile is a component
420
acd908528ef7 core: profile creation/deletion through database
Goffi <goffi@goffi.org>
parents: 418
diff changeset
180 @param callback: called when the profile actually exists in database and memory
893
308a96bc7c1b core, frontends: add method asyncDeleteProfile, remove synchronous methods createProfile and deleteProfile
souliane <souliane@mailoo.org>
parents: 866
diff changeset
181 @return: a Deferred instance
423
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
182 """
420
acd908528ef7 core: profile creation/deletion through database
Goffi <goffi@goffi.org>
parents: 418
diff changeset
183 if self.storage.hasProfile(profile):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
184 log.info(_("The profile name already exists"))
751
1def5b7edf9f core, bridge: better GenericException handling
Goffi <goffi@goffi.org>
parents: 747
diff changeset
185 return defer.fail(Failure(exceptions.ConflictError))
420
acd908528ef7 core: profile creation/deletion through database
Goffi <goffi@goffi.org>
parents: 418
diff changeset
186 if not self.host.trigger.point("ProfileCreation", profile):
751
1def5b7edf9f core, bridge: better GenericException handling
Goffi <goffi@goffi.org>
parents: 747
diff changeset
187 return defer.fail(Failure(exceptions.CancelError))
2144
1d3f73e065e1 core, jp: component handling + client handling refactoring:
Goffi <goffi@goffi.org>
parents: 1934
diff changeset
188 return self.storage.createProfile(profile, component or None)
420
acd908528ef7 core: profile creation/deletion through database
Goffi <goffi@goffi.org>
parents: 418
diff changeset
189
894
57c32d8ec847 core (memory): asyncDeleteProfile can force the deletion of a profile, even if it's connected (when called from the backend only)
souliane <souliane@mailoo.org>
parents: 893
diff changeset
190 def asyncDeleteProfile(self, profile, force=False):
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 66
diff changeset
191 """Delete an existing profile
944
e1842ebcb2f3 core, plugin XEP-0115: discovery refactoring:
Goffi <goffi@goffi.org>
parents: 938
diff changeset
192
893
308a96bc7c1b core, frontends: add method asyncDeleteProfile, remove synchronous methods createProfile and deleteProfile
souliane <souliane@mailoo.org>
parents: 866
diff changeset
193 @param profile: name of the profile
894
57c32d8ec847 core (memory): asyncDeleteProfile can force the deletion of a profile, even if it's connected (when called from the backend only)
souliane <souliane@mailoo.org>
parents: 893
diff changeset
194 @param force: force the deletion even if the profile is connected.
57c32d8ec847 core (memory): asyncDeleteProfile can force the deletion of a profile, even if it's connected (when called from the backend only)
souliane <souliane@mailoo.org>
parents: 893
diff changeset
195 To be used for direct calls only (not through the bridge).
893
308a96bc7c1b core, frontends: add method asyncDeleteProfile, remove synchronous methods createProfile and deleteProfile
souliane <souliane@mailoo.org>
parents: 866
diff changeset
196 @return: a Deferred instance
308a96bc7c1b core, frontends: add method asyncDeleteProfile, remove synchronous methods createProfile and deleteProfile
souliane <souliane@mailoo.org>
parents: 866
diff changeset
197 """
420
acd908528ef7 core: profile creation/deletion through database
Goffi <goffi@goffi.org>
parents: 418
diff changeset
198 if not self.storage.hasProfile(profile):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
199 log.info(_("Trying to delete an unknown profile"))
1836
fb94f92dc740 core (params): return given profile for ProfileUnknownError
Goffi <goffi@goffi.org>
parents: 1766
diff changeset
200 return defer.fail(Failure(exceptions.ProfileUnknownError(profile)))
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 916
diff changeset
201 if self.host.isConnected(profile):
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 916
diff changeset
202 if force:
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 916
diff changeset
203 self.host.disconnect(profile)
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 916
diff changeset
204 else:
993
301b342c697a core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents: 968
diff changeset
205 log.info(_("Trying to delete a connected profile"))
1624
7e749e8eefd0 core: fixed launchAction:
Goffi <goffi@goffi.org>
parents: 1611
diff changeset
206 return defer.fail(Failure(exceptions.ProfileConnected))
893
308a96bc7c1b core, frontends: add method asyncDeleteProfile, remove synchronous methods createProfile and deleteProfile
souliane <souliane@mailoo.org>
parents: 866
diff changeset
207 return self.storage.deleteProfile(profile)
68
9b842086d915 multiple profiles update
Goffi <goffi@goffi.org>
parents: 66
diff changeset
208
1263
cfd636203e8f core: misc improvments:
Goffi <goffi@goffi.org>
parents: 1238
diff changeset
209 def getProfileName(self, profile_key, return_profile_keys=False):
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
210 """return profile according to profile_key
944
e1842ebcb2f3 core, plugin XEP-0115: discovery refactoring:
Goffi <goffi@goffi.org>
parents: 938
diff changeset
211
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
212 @param profile_key: profile name or key which can be
1519
fbe86b5d156f core (memory, params): minor docstrings updates
Goffi <goffi@goffi.org>
parents: 1497
diff changeset
213 C.PROF_KEY_ALL for all profiles
fbe86b5d156f core (memory, params): minor docstrings updates
Goffi <goffi@goffi.org>
parents: 1497
diff changeset
214 C.PROF_KEY_DEFAULT for default profile
fbe86b5d156f core (memory, params): minor docstrings updates
Goffi <goffi@goffi.org>
parents: 1497
diff changeset
215 @param return_profile_keys: if True, return unmanaged profile keys (like C.PROF_KEY_ALL). This keys must be managed by the caller
1460
c7fd121a6180 core: getProfileName no raise ProfileUnknownError + minor doc fixes
Goffi <goffi@goffi.org>
parents: 1409
diff changeset
216 @return: requested profile name
1590
ab54af2a9ab2 core (memory): fixed a case where getProfileName was returning an empty string instead of raising an errror
Goffi <goffi@goffi.org>
parents: 1587
diff changeset
217 @raise exceptions.ProfileUnknownError: profile doesn't exists
ab54af2a9ab2 core (memory): fixed a case where getProfileName was returning an empty string instead of raising an errror
Goffi <goffi@goffi.org>
parents: 1587
diff changeset
218 @raise exceptions.ProfileNotSetError: if C.PROF_KEY_NONE is used
1460
c7fd121a6180 core: getProfileName no raise ProfileUnknownError + minor doc fixes
Goffi <goffi@goffi.org>
parents: 1409
diff changeset
219 """
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
220 if profile_key == "@DEFAULT@":
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
221 default = self.host.memory.memory_data.get("Profile_default")
443
7099ea9c1b12 core: getPrivate/setPrivate removed from memory, private values now use database storage and persistent dicts \o/
Goffi <goffi@goffi.org>
parents: 432
diff changeset
222 if not default:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
223 log.info(_("No default profile, returning first one"))
625
5646ecd3e35e core: fixed crash on first run, when no profile exist yet
Goffi <goffi@goffi.org>
parents: 620
diff changeset
224 try:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
225 default = self.host.memory.memory_data[
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
226 "Profile_default"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
227 ] = self.storage.getProfilesList()[0]
625
5646ecd3e35e core: fixed crash on first run, when no profile exist yet
Goffi <goffi@goffi.org>
parents: 620
diff changeset
228 except IndexError:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
229 log.info(_("No profile exist yet"))
1836
fb94f92dc740 core (params): return given profile for ProfileUnknownError
Goffi <goffi@goffi.org>
parents: 1766
diff changeset
230 raise exceptions.ProfileUnknownError(profile_key)
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
231 return (
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
232 default
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
233 ) # FIXME: temporary, must use real default value, and fallback to first one if it doesn't exists
916
1a759096ccbd core: use of Const for profile_key + replaced '@DEFAULT@' default profile_key by '@NONE@'
Goffi <goffi@goffi.org>
parents: 914
diff changeset
234 elif profile_key == C.PROF_KEY_NONE:
639
99eee75ec1b7 core: better handling of profile_key and don't write the param file anymore
souliane <souliane@mailoo.org>
parents: 635
diff changeset
235 raise exceptions.ProfileNotSetError
1519
fbe86b5d156f core (memory, params): minor docstrings updates
Goffi <goffi@goffi.org>
parents: 1497
diff changeset
236 elif return_profile_keys and profile_key in [C.PROF_KEY_ALL]:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
237 return profile_key # this value must be managed by the caller
412
62b17854254e database integration: first draft
Goffi <goffi@goffi.org>
parents: 399
diff changeset
238 if not self.storage.hasProfile(profile_key):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
239 log.error(_(u"Trying to access an unknown profile (%s)") % profile_key)
1836
fb94f92dc740 core (params): return given profile for ProfileUnknownError
Goffi <goffi@goffi.org>
parents: 1766
diff changeset
240 raise exceptions.ProfileUnknownError(profile_key)
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
241 return profile_key
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
242
19
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
243 def __get_unique_node(self, parent, tag, name):
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
244 """return node with given tag
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
245
19
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
246 @param parent: parent of nodes to check (e.g. documentElement)
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
247 @param tag: tag to check (e.g. "category")
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
248 @param name: name to check (e.g. "JID")
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
249 @return: node if it exist or None
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
250 """
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
251 for node in parent.childNodes:
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
252 if node.nodeName == tag and node.getAttribute("name") == name:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
253 # the node already exists
19
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
254 return node
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
255 # the node is new
19
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
256 return None
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
257
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
258 def updateParams(self, xml, security_limit=C.NO_SECURITY_LIMIT, app=""):
833
9bac2fc74968 memory: bug fix to not register twice frontends parameters + added some tests for param update
souliane <souliane@mailoo.org>
parents: 813
diff changeset
259 """import xml in parameters, update if the param already exists
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
260
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
261 If security_limit is specified and greater than -1, the parameters
778
bfafed251b40 memory: fixed wrong information in the docstrings for security_limit
souliane <souliane@mailoo.org>
parents: 777
diff changeset
262 that have a security level greater than security_limit are skipped.
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
263 @param xml: parameters in xml form
778
bfafed251b40 memory: fixed wrong information in the docstrings for security_limit
souliane <souliane@mailoo.org>
parents: 777
diff changeset
264 @param security_limit: -1 means no security, 0 is the maximum security then the higher the less secure
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
265 @param app: name of the frontend registering the parameters or empty value
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
266 """
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
267 # TODO: should word with domish.Element
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
268 src_parent = minidom.parseString(xml.encode("utf-8")).documentElement
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
269
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
270 def pre_process_app_node(src_parent, security_limit, app):
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
271 """Parameters that are registered from a frontend must be checked"""
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
272 to_remove = []
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
273 for type_node in src_parent.childNodes:
914
1a3ba959f0ab core (memory): moved Params in its own module + introduced a new core/constants module, and moved some constants there
Goffi <goffi@goffi.org>
parents: 909
diff changeset
274 if type_node.nodeName != C.INDIVIDUAL:
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
275 to_remove.append(type_node) # accept individual parameters only
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
276 continue
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
277 for cat_node in type_node.childNodes:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
278 if cat_node.nodeName != "category":
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
279 to_remove.append(cat_node)
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
280 continue
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
281 to_remove_count = (
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
282 0
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
283 ) # count the params to be removed from current category
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
284 for node in cat_node.childNodes:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
285 if node.nodeName != "param" or not self.checkSecurityLimit(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
286 node, security_limit
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
287 ):
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
288 to_remove.append(node)
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
289 to_remove_count += 1
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
290 continue
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
291 node.setAttribute("app", app)
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
292 if (
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
293 len(cat_node.childNodes) == to_remove_count
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
294 ): # remove empty category
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
295 for dummy in xrange(0, to_remove_count):
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
296 to_remove.pop()
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
297 to_remove.append(cat_node)
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
298 for node in to_remove:
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
299 node.parentNode.removeChild(node)
19
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
300
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
301 def import_node(tgt_parent, src_parent):
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
302 for child in src_parent.childNodes:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
303 if child.nodeName == "#text":
19
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
304 continue
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
305 node = self.__get_unique_node(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
306 tgt_parent, child.nodeName, child.getAttribute("name")
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
307 )
592
e5a875a3311b Fix pep8 support in src/memory.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
308 if not node: # The node is new
1051
854880a31717 memory (params), test: fixes updateParams bug
souliane <souliane@mailoo.org>
parents: 1050
diff changeset
309 tgt_parent.appendChild(child.cloneNode(True))
19
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
310 else:
662
4f747d7fde8c core: importParams renamed to updateParams: it now updates the parameter instead of appending children if it find an existing one.
Goffi <goffi@goffi.org>
parents: 656
diff changeset
311 if child.nodeName == "param":
833
9bac2fc74968 memory: bug fix to not register twice frontends parameters + added some tests for param update
souliane <souliane@mailoo.org>
parents: 813
diff changeset
312 # The child updates an existing parameter, we replace the node
662
4f747d7fde8c core: importParams renamed to updateParams: it now updates the parameter instead of appending children if it find an existing one.
Goffi <goffi@goffi.org>
parents: 656
diff changeset
313 tgt_parent.replaceChild(child, node)
4f747d7fde8c core: importParams renamed to updateParams: it now updates the parameter instead of appending children if it find an existing one.
Goffi <goffi@goffi.org>
parents: 656
diff changeset
314 else:
4f747d7fde8c core: importParams renamed to updateParams: it now updates the parameter instead of appending children if it find an existing one.
Goffi <goffi@goffi.org>
parents: 656
diff changeset
315 # the node already exists, we recurse 1 more level
4f747d7fde8c core: importParams renamed to updateParams: it now updates the parameter instead of appending children if it find an existing one.
Goffi <goffi@goffi.org>
parents: 656
diff changeset
316 import_node(node, child)
19
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
317
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
318 if app:
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
319 pre_process_app_node(src_parent, security_limit, app)
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
320 import_node(self.dom.documentElement, src_parent)
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
321
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
322 def paramsRegisterApp(self, xml, security_limit, app):
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
323 """Register frontend's specific parameters
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
324
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
325 If security_limit is specified and greater than -1, the parameters
778
bfafed251b40 memory: fixed wrong information in the docstrings for security_limit
souliane <souliane@mailoo.org>
parents: 777
diff changeset
326 that have a security level greater than security_limit are skipped.
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
327 @param xml: XML definition of the parameters to be added
778
bfafed251b40 memory: fixed wrong information in the docstrings for security_limit
souliane <souliane@mailoo.org>
parents: 777
diff changeset
328 @param security_limit: -1 means no security, 0 is the maximum security then the higher the less secure
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
329 @param app: name of the frontend registering the parameters
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
330 """
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
331 if not app:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
332 log.warning(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
333 _(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
334 u"Trying to register frontends parameters with no specified app: aborted"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
335 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
336 )
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
337 return
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
338 if not hasattr(self, "frontends_cache"):
833
9bac2fc74968 memory: bug fix to not register twice frontends parameters + added some tests for param update
souliane <souliane@mailoo.org>
parents: 813
diff changeset
339 self.frontends_cache = []
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
340 if app in self.frontends_cache:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
341 log.debug(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
342 _(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
343 u"Trying to register twice frontends parameters for %(app)s: aborted"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
344 % {"app": app}
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
345 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
346 )
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
347 return
833
9bac2fc74968 memory: bug fix to not register twice frontends parameters + added some tests for param update
souliane <souliane@mailoo.org>
parents: 813
diff changeset
348 self.frontends_cache.append(app)
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
349 self.updateParams(xml, security_limit, app)
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
350 log.debug(u"Frontends parameters registered for %(app)s" % {"app": app})
19
f2a745ca0fbc refactoring: using xml params part III (parameters import)
Goffi <goffi@goffi.org>
parents: 18
diff changeset
351
20
fc8c202cda87 refactoring: using xml params part IV (default values)
Goffi <goffi@goffi.org>
parents: 19
diff changeset
352 def __default_ok(self, value, name, category):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
353 # FIXME: will not work with individual parameters
722
04aabc3f2684 core (memory): fixed setDefault behaviour + minor refactoring
Goffi <goffi@goffi.org>
parents: 679
diff changeset
354 self.setParam(name, value, category)
20
fc8c202cda87 refactoring: using xml params part IV (default values)
Goffi <goffi@goffi.org>
parents: 19
diff changeset
355
fc8c202cda87 refactoring: using xml params part IV (default values)
Goffi <goffi@goffi.org>
parents: 19
diff changeset
356 def __default_ko(self, failure, name, category):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
357 log.error(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
358 _(u"Can't determine default value for [%(category)s/%(name)s]: %(reason)s")
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
359 % {"category": category, "name": name, "reason": str(failure.value)}
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
360 )
20
fc8c202cda87 refactoring: using xml params part IV (default values)
Goffi <goffi@goffi.org>
parents: 19
diff changeset
361
fc8c202cda87 refactoring: using xml params part IV (default values)
Goffi <goffi@goffi.org>
parents: 19
diff changeset
362 def setDefault(self, name, category, callback, errback=None):
fc8c202cda87 refactoring: using xml params part IV (default values)
Goffi <goffi@goffi.org>
parents: 19
diff changeset
363 """Set default value of parameter
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
364
20
fc8c202cda87 refactoring: using xml params part IV (default values)
Goffi <goffi@goffi.org>
parents: 19
diff changeset
365 'default_cb' attibute of parameter must be set to 'yes'
fc8c202cda87 refactoring: using xml params part IV (default values)
Goffi <goffi@goffi.org>
parents: 19
diff changeset
366 @param name: name of the parameter
fc8c202cda87 refactoring: using xml params part IV (default values)
Goffi <goffi@goffi.org>
parents: 19
diff changeset
367 @param category: category of the parameter
fc8c202cda87 refactoring: using xml params part IV (default values)
Goffi <goffi@goffi.org>
parents: 19
diff changeset
368 @param callback: must return a string with the value (use deferred if needed)
fc8c202cda87 refactoring: using xml params part IV (default values)
Goffi <goffi@goffi.org>
parents: 19
diff changeset
369 @param errback: must manage the error with args failure, name, category
fc8c202cda87 refactoring: using xml params part IV (default values)
Goffi <goffi@goffi.org>
parents: 19
diff changeset
370 """
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
371 # TODO: send signal param update if value changed
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
372 # TODO: manage individual paramaters
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
373 log.debug(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
374 "setDefault called for %(category)s/%(name)s"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
375 % {"category": category, "name": name}
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
376 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
377 node = self._getParamNode(name, category, "@ALL@")
20
fc8c202cda87 refactoring: using xml params part IV (default values)
Goffi <goffi@goffi.org>
parents: 19
diff changeset
378 if not node:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
379 log.error(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
380 _(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
381 u"Requested param [%(name)s] in category [%(category)s] doesn't exist !"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
382 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
383 % {"name": name, "category": category}
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
384 )
20
fc8c202cda87 refactoring: using xml params part IV (default values)
Goffi <goffi@goffi.org>
parents: 19
diff changeset
385 return
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
386 if node[1].getAttribute("default_cb") == "yes":
722
04aabc3f2684 core (memory): fixed setDefault behaviour + minor refactoring
Goffi <goffi@goffi.org>
parents: 679
diff changeset
387 # del node[1].attributes['default_cb'] # default_cb is not used anymore as a flag to know if we have to set the default value,
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
388 # and we can still use it later e.g. to call a generic setDefault method
914
1a3ba959f0ab core (memory): moved Params in its own module + introduced a new core/constants module, and moved some constants there
Goffi <goffi@goffi.org>
parents: 909
diff changeset
389 value = self._getParam(category, name, C.GENERAL)
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
390 if value is None: # no value set by the user: we have the default value
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
391 log.debug("Default value to set, using callback")
722
04aabc3f2684 core (memory): fixed setDefault behaviour + minor refactoring
Goffi <goffi@goffi.org>
parents: 679
diff changeset
392 d = defer.maybeDeferred(callback)
04aabc3f2684 core (memory): fixed setDefault behaviour + minor refactoring
Goffi <goffi@goffi.org>
parents: 679
diff changeset
393 d.addCallback(self.__default_ok, name, category)
04aabc3f2684 core (memory): fixed setDefault behaviour + minor refactoring
Goffi <goffi@goffi.org>
parents: 679
diff changeset
394 d.addErrback(errback or self.__default_ko, name, category)
17
74a39f40eb6d refactoring: using xml params (not finished yet)
Goffi <goffi@goffi.org>
parents: 14
diff changeset
395
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
396 def _getAttr_internal(self, node, attr, value):
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
397 """Get attribute value.
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
398
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
399 /!\ This method would return encrypted password values.
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
400
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 512
diff changeset
401 @param node: XML param node
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 512
diff changeset
402 @param attr: name of the attribute to get (e.g.: 'value' or 'type')
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
403 @param value: user defined value
1534
a5e0393a06cd plugin ip, params: plugin IP discovery, first draft:
Goffi <goffi@goffi.org>
parents: 1519
diff changeset
404 @return: value (can be str, bool, int, list, None)
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
405 """
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
406 if attr == "value":
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
407 value_to_use = (
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
408 value if value is not None else node.getAttribute(attr)
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
409 ) # we use value (user defined) if it exist, else we use node's default value
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
410 if node.getAttribute("type") == "bool":
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
411 return C.bool(value_to_use)
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
412 if node.getAttribute("type") == "int":
1220
f91e7028e2c3 memory (params), tools (xml_tools), plugins, frontends: add "int" parameter type with "min" and "max" attributes
souliane <souliane@mailoo.org>
parents: 1090
diff changeset
413 return int(value_to_use)
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
414 elif node.getAttribute("type") == "list":
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
415 if (
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
416 not value_to_use
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
417 ): # no user defined value, take default value from the XML
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
418 options = [
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
419 option
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
420 for option in node.childNodes
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
421 if option.nodeName == "option"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
422 ]
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
423 selected = [
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
424 option
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
425 for option in options
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
426 if option.getAttribute("selected") == "true"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
427 ]
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
428 cat, param = (
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
429 node.parentNode.getAttribute("name"),
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
430 node.getAttribute("name"),
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
431 )
1747
40b7f18ac704 memory (params): fixes loading user value and building params XML for jids_list type
souliane <souliane@mailoo.org>
parents: 1745
diff changeset
432 if len(selected) == 1:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
433 value_to_use = selected[0].getAttribute("value")
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
434 log.info(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
435 _(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
436 "Unset parameter (%(cat)s, %(param)s) of type list will use the default option '%(value)s'"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
437 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
438 % {"cat": cat, "param": param, "value": value_to_use}
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
439 )
1747
40b7f18ac704 memory (params): fixes loading user value and building params XML for jids_list type
souliane <souliane@mailoo.org>
parents: 1745
diff changeset
440 return value_to_use
40b7f18ac704 memory (params): fixes loading user value and building params XML for jids_list type
souliane <souliane@mailoo.org>
parents: 1745
diff changeset
441 if len(selected) == 0:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
442 log.error(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
443 _(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
444 u"Parameter (%(cat)s, %(param)s) of type list has no default option!"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
445 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
446 % {"cat": cat, "param": param}
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
447 )
1747
40b7f18ac704 memory (params): fixes loading user value and building params XML for jids_list type
souliane <souliane@mailoo.org>
parents: 1745
diff changeset
448 else:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
449 log.error(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
450 _(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
451 u"Parameter (%(cat)s, %(param)s) of type list has more than one default option!"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
452 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
453 % {"cat": cat, "param": param}
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
454 )
1747
40b7f18ac704 memory (params): fixes loading user value and building params XML for jids_list type
souliane <souliane@mailoo.org>
parents: 1745
diff changeset
455 raise exceptions.DataError
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
456 elif node.getAttribute("type") == "jids_list":
1747
40b7f18ac704 memory (params): fixes loading user value and building params XML for jids_list type
souliane <souliane@mailoo.org>
parents: 1745
diff changeset
457 if value_to_use:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
458 jids = value_to_use.split(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
459 "\t"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
460 ) # FIXME: it's not good to use tabs as separator !
1747
40b7f18ac704 memory (params): fixes loading user value and building params XML for jids_list type
souliane <souliane@mailoo.org>
parents: 1745
diff changeset
461 else: # no user defined value, take default value from the XML
40b7f18ac704 memory (params): fixes loading user value and building params XML for jids_list type
souliane <souliane@mailoo.org>
parents: 1745
diff changeset
462 jids = [getText(jid_) for jid_ in node.getElementsByTagName("jid")]
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
463 to_delete = []
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
464 for idx, value in enumerate(jids):
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
465 try:
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
466 jids[idx] = jid.JID(value)
1740
681fe91abcc0 memory (params): parameter jids_list values are specified with <jid>...</jid>
souliane <souliane@mailoo.org>
parents: 1739
diff changeset
467 except (RuntimeError, jid.InvalidFormat, AttributeError):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
468 log.warning(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
469 u"Incorrect jid value found in jids list: [{}]".format(value)
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
470 )
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
471 to_delete.append(value)
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
472 for value in to_delete:
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
473 jids.remove(value)
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
474 return jids
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 512
diff changeset
475 return value_to_use
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 512
diff changeset
476 return node.getAttribute(attr)
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 512
diff changeset
477
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
478 def _getAttr(self, node, attr, value):
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
479 """Get attribute value (synchronous).
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
480
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
481 /!\ This method can not be used to retrieve password values.
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
482 @param node: XML param node
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
483 @param attr: name of the attribute to get (e.g.: 'value' or 'type')
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
484 @param value: user defined value
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
485 @return (unicode, bool, int, list): value to retrieve
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
486 """
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
487 if attr == "value" and node.getAttribute("type") == "password":
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
488 raise exceptions.InternalError(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
489 "To retrieve password values, use _asyncGetAttr instead of _getAttr"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
490 )
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
491 return self._getAttr_internal(node, attr, value)
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
492
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
493 def _asyncGetAttr(self, node, attr, value, profile=None):
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
494 """Get attribute value.
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
495
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
496 Profile passwords are returned hashed (if not empty),
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
497 other passwords are returned decrypted (if not empty).
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
498 @param node: XML param node
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
499 @param attr: name of the attribute to get (e.g.: 'value' or 'type')
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
500 @param value: user defined value
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
501 @param profile: %(doc_profile)s
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
502 @return (unicode, bool, int, list): Deferred value to retrieve
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
503 """
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
504 value = self._getAttr_internal(node, attr, value)
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
505 if attr != "value" or node.getAttribute("type") != "password":
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
506 return defer.succeed(value)
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
507 param_cat = node.parentNode.getAttribute("name")
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
508 param_name = node.getAttribute("name")
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
509 if ((param_cat, param_name) == C.PROFILE_PASS_PATH) or not value:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
510 return defer.succeed(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
511 value
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
512 ) # profile password and empty passwords are returned "as is"
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
513 if not profile:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
514 raise exceptions.ProfileNotSetError(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
515 "The profile is needed to decrypt a password"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
516 )
1090
594fbdda4a87 memory: add helper methods encryptValue and decryptValue
souliane <souliane@mailoo.org>
parents: 1088
diff changeset
517 d = self.host.memory.decryptValue(value, profile)
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
518
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
519 def gotPlainPassword(password):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
520 if (
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
521 password is None
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
522 ): # empty value means empty password, None means decryption failure
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
523 raise exceptions.InternalError(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
524 _("The stored password could not be decrypted!")
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
525 )
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
526 return password
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
527
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
528 return d.addCallback(gotPlainPassword)
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
529
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 512
diff changeset
530 def __type_to_string(self, result):
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 512
diff changeset
531 """ convert result to string, according to its type """
592
e5a875a3311b Fix pep8 support in src/memory.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
532 if isinstance(result, bool):
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 512
diff changeset
533 return "true" if result else "false"
1220
f91e7028e2c3 memory (params), tools (xml_tools), plugins, frontends: add "int" parameter type with "min" and "max" attributes
souliane <souliane@mailoo.org>
parents: 1090
diff changeset
534 elif isinstance(result, int):
f91e7028e2c3 memory (params), tools (xml_tools), plugins, frontends: add "int" parameter type with "min" and "max" attributes
souliane <souliane@mailoo.org>
parents: 1090
diff changeset
535 return str(result)
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 512
diff changeset
536 return result
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 512
diff changeset
537
916
1a759096ccbd core: use of Const for profile_key + replaced '@DEFAULT@' default profile_key by '@NONE@'
Goffi <goffi@goffi.org>
parents: 914
diff changeset
538 def getStringParamA(self, name, category, attr="value", profile_key=C.PROF_KEY_NONE):
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 512
diff changeset
539 """ Same as getParamA but for bridge: convert non string value to string """
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
540 return self.__type_to_string(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
541 self.getParamA(name, category, attr, profile_key=profile_key)
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
542 )
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 512
diff changeset
543
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
544 def getParamA(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
545 self, name, category, attr="value", use_default=True, profile_key=C.PROF_KEY_NONE
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
546 ):
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
547 """Helper method to get a specific attribute.
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
548
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
549 /!\ This method would return encrypted password values,
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
550 to get the plain values you have to use _asyncGetParamA.
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
551 @param name: name of the parameter
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
552 @param category: category of the parameter
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
553 @param attr: name of the attribute (default: "value")
1534
a5e0393a06cd plugin ip, params: plugin IP discovery, first draft:
Goffi <goffi@goffi.org>
parents: 1519
diff changeset
554 @parm use_default(bool): if True and attr=='value', return default value if not set
a5e0393a06cd plugin ip, params: plugin IP discovery, first draft:
Goffi <goffi@goffi.org>
parents: 1519
diff changeset
555 else return None if not set
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
556 @param profile: owner of the param (@ALL@ for everyone)
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
557 @return: attribute
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
558 """
1647
31b96ac3eec2 core (param), plugin file: set security_limit for acount changes, backend (dis)connection, and put a higher one for file send
Goffi <goffi@goffi.org>
parents: 1624
diff changeset
559 # FIXME: looks really dirty and buggy, need to be reviewed/refactored
31b96ac3eec2 core (param), plugin file: set security_limit for acount changes, backend (dis)connection, and put a higher one for file send
Goffi <goffi@goffi.org>
parents: 1624
diff changeset
560 # FIXME: security_limit is not managed here !
722
04aabc3f2684 core (memory): fixed setDefault behaviour + minor refactoring
Goffi <goffi@goffi.org>
parents: 679
diff changeset
561 node = self._getParamNode(name, category)
17
74a39f40eb6d refactoring: using xml params (not finished yet)
Goffi <goffi@goffi.org>
parents: 14
diff changeset
562 if not node:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
563 log.error(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
564 _(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
565 u"Requested param [%(name)s] in category [%(category)s] doesn't exist !"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
566 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
567 % {"name": name, "category": category}
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
568 )
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 512
diff changeset
569 raise exceptions.NotFound
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
570
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
571 if attr == "value" and node[1].getAttribute("type") == "password":
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
572 raise exceptions.InternalError(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
573 "To retrieve password values, use asyncGetParamA instead of getParamA"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
574 )
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
575
914
1a3ba959f0ab core (memory): moved Params in its own module + introduced a new core/constants module, and moved some constants there
Goffi <goffi@goffi.org>
parents: 909
diff changeset
576 if node[0] == C.GENERAL:
1a3ba959f0ab core (memory): moved Params in its own module + introduced a new core/constants module, and moved some constants there
Goffi <goffi@goffi.org>
parents: 909
diff changeset
577 value = self._getParam(category, name, C.GENERAL)
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
578 if value is None and attr == "value" and not use_default:
1534
a5e0393a06cd plugin ip, params: plugin IP discovery, first draft:
Goffi <goffi@goffi.org>
parents: 1519
diff changeset
579 return value
722
04aabc3f2684 core (memory): fixed setDefault behaviour + minor refactoring
Goffi <goffi@goffi.org>
parents: 679
diff changeset
580 return self._getAttr(node[1], attr, value)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
581
914
1a3ba959f0ab core (memory): moved Params in its own module + introduced a new core/constants module, and moved some constants there
Goffi <goffi@goffi.org>
parents: 909
diff changeset
582 assert node[0] == C.INDIVIDUAL
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
583
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
584 profile = self.getProfileName(profile_key)
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
585 if not profile:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
586 log.error(_("Requesting a param for an non-existant profile"))
1836
fb94f92dc740 core (params): return given profile for ProfileUnknownError
Goffi <goffi@goffi.org>
parents: 1766
diff changeset
587 raise exceptions.ProfileUnknownError(profile_key)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
588
413
dd4caab17008 core: - individual parameters managed through sqlite
Goffi <goffi@goffi.org>
parents: 412
diff changeset
589 if profile not in self.params:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
590 log.error(_("Requesting synchronous param for not connected profile"))
1624
7e749e8eefd0 core: fixed launchAction:
Goffi <goffi@goffi.org>
parents: 1611
diff changeset
591 raise exceptions.ProfileNotConnected(profile)
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
592
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
593 if attr == "value":
722
04aabc3f2684 core (memory): fixed setDefault behaviour + minor refactoring
Goffi <goffi@goffi.org>
parents: 679
diff changeset
594 value = self._getParam(category, name, profile=profile)
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
595 if value is None and attr == "value" and not use_default:
1534
a5e0393a06cd plugin ip, params: plugin IP discovery, first draft:
Goffi <goffi@goffi.org>
parents: 1519
diff changeset
596 return value
722
04aabc3f2684 core (memory): fixed setDefault behaviour + minor refactoring
Goffi <goffi@goffi.org>
parents: 679
diff changeset
597 return self._getAttr(node[1], attr, value)
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 512
diff changeset
598
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
599 def asyncGetStringParamA(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
600 self,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
601 name,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
602 category,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
603 attr="value",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
604 security_limit=C.NO_SECURITY_LIMIT,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
605 profile_key=C.PROF_KEY_NONE,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
606 ):
656
7d6e5807504a bridge, memory: added the parameter security_limit to asyncGetParamA so it can be used from libervia. refactorization in memory.py are related to that.
souliane <souliane@mailoo.org>
parents: 645
diff changeset
607 d = self.asyncGetParamA(name, category, attr, security_limit, profile_key)
538
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 512
diff changeset
608 d.addCallback(self.__type_to_string)
2c4016921403 core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents: 512
diff changeset
609 return d
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
610
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
611 def asyncGetParamA(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
612 self,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
613 name,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
614 category,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
615 attr="value",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
616 security_limit=C.NO_SECURITY_LIMIT,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
617 profile_key=C.PROF_KEY_NONE,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
618 ):
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
619 """Helper method to get a specific attribute.
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
620
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
621 @param name: name of the parameter
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
622 @param category: category of the parameter
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
623 @param attr: name of the attribute (default: "value")
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
624 @param profile: owner of the param (@ALL@ for everyone)
1534
a5e0393a06cd plugin ip, params: plugin IP discovery, first draft:
Goffi <goffi@goffi.org>
parents: 1519
diff changeset
625 @return (defer.Deferred): parameter value, with corresponding type (bool, int, list, etc)
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
626 """
722
04aabc3f2684 core (memory): fixed setDefault behaviour + minor refactoring
Goffi <goffi@goffi.org>
parents: 679
diff changeset
627 node = self._getParamNode(name, category)
413
dd4caab17008 core: - individual parameters managed through sqlite
Goffi <goffi@goffi.org>
parents: 412
diff changeset
628 if not node:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
629 log.error(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
630 _(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
631 u"Requested param [%(name)s] in category [%(category)s] doesn't exist !"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
632 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
633 % {"name": name, "category": category}
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
634 )
1290
faa1129559b8 core, frontends: refactoring to base Libervia on QuickFrontend (big mixed commit):
Goffi <goffi@goffi.org>
parents: 1263
diff changeset
635 raise ValueError("Requested param doesn't exist")
413
dd4caab17008 core: - individual parameters managed through sqlite
Goffi <goffi@goffi.org>
parents: 412
diff changeset
636
656
7d6e5807504a bridge, memory: added the parameter security_limit to asyncGetParamA so it can be used from libervia. refactorization in memory.py are related to that.
souliane <souliane@mailoo.org>
parents: 645
diff changeset
637 if not self.checkSecurityLimit(node[1], security_limit):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
638 log.warning(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
639 _(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
640 u"Trying to get parameter '%(param)s' in category '%(cat)s' without authorization!!!"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
641 % {"param": name, "cat": category}
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
642 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
643 )
1290
faa1129559b8 core, frontends: refactoring to base Libervia on QuickFrontend (big mixed commit):
Goffi <goffi@goffi.org>
parents: 1263
diff changeset
644 raise exceptions.PermissionError
656
7d6e5807504a bridge, memory: added the parameter security_limit to asyncGetParamA so it can be used from libervia. refactorization in memory.py are related to that.
souliane <souliane@mailoo.org>
parents: 645
diff changeset
645
914
1a3ba959f0ab core (memory): moved Params in its own module + introduced a new core/constants module, and moved some constants there
Goffi <goffi@goffi.org>
parents: 909
diff changeset
646 if node[0] == C.GENERAL:
1a3ba959f0ab core (memory): moved Params in its own module + introduced a new core/constants module, and moved some constants there
Goffi <goffi@goffi.org>
parents: 909
diff changeset
647 value = self._getParam(category, name, C.GENERAL)
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
648 return self._asyncGetAttr(node[1], attr, value)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
649
914
1a3ba959f0ab core (memory): moved Params in its own module + introduced a new core/constants module, and moved some constants there
Goffi <goffi@goffi.org>
parents: 909
diff changeset
650 assert node[0] == C.INDIVIDUAL
413
dd4caab17008 core: - individual parameters managed through sqlite
Goffi <goffi@goffi.org>
parents: 412
diff changeset
651
dd4caab17008 core: - individual parameters managed through sqlite
Goffi <goffi@goffi.org>
parents: 412
diff changeset
652 profile = self.getProfileName(profile_key)
dd4caab17008 core: - individual parameters managed through sqlite
Goffi <goffi@goffi.org>
parents: 412
diff changeset
653 if not profile:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
654 raise exceptions.InternalError(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
655 _("Requesting a param for a non-existant profile")
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
656 )
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
657
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
658 if attr != "value":
423
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
659 return defer.succeed(node[1].getAttribute(attr))
413
dd4caab17008 core: - individual parameters managed through sqlite
Goffi <goffi@goffi.org>
parents: 412
diff changeset
660 try:
722
04aabc3f2684 core (memory): fixed setDefault behaviour + minor refactoring
Goffi <goffi@goffi.org>
parents: 679
diff changeset
661 value = self._getParam(category, name, profile=profile)
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
662 return self._asyncGetAttr(node[1], attr, value, profile)
486
0d9908ac775e core: entity cache misc data management + error moved to core.exceptions in memory
Goffi <goffi@goffi.org>
parents: 484
diff changeset
663 except exceptions.ProfileNotInCacheError:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
664 # We have to ask data to the storage manager
413
dd4caab17008 core: - individual parameters managed through sqlite
Goffi <goffi@goffi.org>
parents: 412
diff changeset
665 d = self.storage.getIndParam(category, name, profile)
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
666 return d.addCallback(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
667 lambda value: self._asyncGetAttr(node[1], attr, value, profile)
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
668 )
17
74a39f40eb6d refactoring: using xml params (not finished yet)
Goffi <goffi@goffi.org>
parents: 14
diff changeset
669
1587
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
670 def asyncGetParamsValuesFromCategory(self, category, security_limit, profile_key):
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
671 """Get all parameters "attribute" for a category
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
672
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
673 @param category(unicode): the desired category
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
674 @param security_limit(int): NO_SECURITY_LIMIT (-1) to return all the params.
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
675 Otherwise sole the params which have a security level defined *and*
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
676 lower or equal to the specified value are returned.
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
677 @param profile_key: %(doc_profile_key)s
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
678 @return (dict): key: param name, value: param value (converted to string if needed)
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
679 """
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
680 # TODO: manage category of general type (without existant profile)
1587
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
681 profile = self.getProfileName(profile_key)
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
682 if not profile:
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
683 log.error(_("Asking params for inexistant profile"))
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
684 return ""
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
685
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
686 def setValue(value, ret, name):
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
687 ret[name] = value
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
688
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
689 def returnCategoryXml(prof_xml):
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
690 ret = {}
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
691 names_d_list = []
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
692 for category_node in prof_xml.getElementsByTagName("category"):
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
693 if category_node.getAttribute("name") == category:
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
694 for param_node in category_node.getElementsByTagName("param"):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
695 name = param_node.getAttribute("name")
1587
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
696 if not name:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
697 log.warning(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
698 u"ignoring attribute without name: {}".format(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
699 param_node.toxml()
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
700 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
701 )
1587
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
702 continue
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
703 d = self.asyncGetStringParamA(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
704 name,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
705 category,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
706 security_limit=security_limit,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
707 profile_key=profile,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
708 )
1587
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
709 d.addCallback(setValue, ret, name)
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
710 names_d_list.append(d)
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
711 break
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
712
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
713 prof_xml.unlink()
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
714 dlist = defer.gatherResults(names_d_list)
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
715 dlist.addCallback(lambda dummy: ret)
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
716 return ret
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
717
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
718 d = self._constructProfileXml(security_limit, "", profile)
1587
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
719 return d.addCallback(returnCategoryXml)
698d6755d62a core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category
Goffi <goffi@goffi.org>
parents: 1586
diff changeset
720
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
721 def _getParam(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
722 self, category, name, type_=C.INDIVIDUAL, cache=None, profile=C.PROF_KEY_NONE
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
723 ):
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
724 """Return the param, or None if it doesn't exist
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
725
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
726 @param category: param category
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
727 @param name: param name
722
04aabc3f2684 core (memory): fixed setDefault behaviour + minor refactoring
Goffi <goffi@goffi.org>
parents: 679
diff changeset
728 @param type_: GENERAL or INDIVIDUAL
423
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
729 @param cache: temporary cache, to use when profile is not logged
722
04aabc3f2684 core (memory): fixed setDefault behaviour + minor refactoring
Goffi <goffi@goffi.org>
parents: 679
diff changeset
730 @param profile: the profile name (not profile key, i.e. name and not something like @DEFAULT@)
423
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
731 @return: param value or None if it doesn't exist
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
732 """
914
1a3ba959f0ab core (memory): moved Params in its own module + introduced a new core/constants module, and moved some constants there
Goffi <goffi@goffi.org>
parents: 909
diff changeset
733 if type_ == C.GENERAL:
592
e5a875a3311b Fix pep8 support in src/memory.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
734 if (category, name) in self.params_gen:
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
735 return self.params_gen[(category, name)]
592
e5a875a3311b Fix pep8 support in src/memory.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
736 return None # This general param has the default value
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
737 assert type_ == C.INDIVIDUAL
916
1a759096ccbd core: use of Const for profile_key + replaced '@DEFAULT@' default profile_key by '@NONE@'
Goffi <goffi@goffi.org>
parents: 914
diff changeset
738 if profile == C.PROF_KEY_NONE:
722
04aabc3f2684 core (memory): fixed setDefault behaviour + minor refactoring
Goffi <goffi@goffi.org>
parents: 679
diff changeset
739 raise exceptions.ProfileNotSetError
592
e5a875a3311b Fix pep8 support in src/memory.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
740 if profile in self.params:
e5a875a3311b Fix pep8 support in src/memory.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
741 cache = self.params[profile] # if profile is in main cache, we use it,
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
742 # ignoring the temporary cache
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
743 elif (
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
744 cache is None
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
745 ): # else we use the temporary cache if it exists, or raise an exception
486
0d9908ac775e core: entity cache misc data management + error moved to core.exceptions in memory
Goffi <goffi@goffi.org>
parents: 484
diff changeset
746 raise exceptions.ProfileNotInCacheError
592
e5a875a3311b Fix pep8 support in src/memory.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
747 if (category, name) not in cache:
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
748 return None
423
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
749 return cache[(category, name)]
17
74a39f40eb6d refactoring: using xml params (not finished yet)
Goffi <goffi@goffi.org>
parents: 14
diff changeset
750
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
751 def _constructProfileXml(self, security_limit, app, profile):
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
752 """Construct xml for asked profile, filling values when needed
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
753
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
754 /!\ as noticed in doc, don't forget to unlink the minidom.Document
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
755 @param security_limit: NO_SECURITY_LIMIT (-1) to return all the params.
642
e07a03d52321 core: fix for methods signature
souliane <souliane@mailoo.org>
parents: 641
diff changeset
756 Otherwise sole the params which have a security level defined *and*
e07a03d52321 core: fix for methods signature
souliane <souliane@mailoo.org>
parents: 641
diff changeset
757 lower or equal to the specified value are returned.
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
758 @param app: name of the frontend requesting the parameters, or '' to get all parameters
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
759 @param profile: profile name (not key !)
423
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
760 @return: a deferred that fire a minidom.Document of the profile xml (cf warning above)
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
761 """
592
e5a875a3311b Fix pep8 support in src/memory.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
762
784
900987e1c0c4 memory: factorize the node checks in Params.__constructProfileXml
souliane <souliane@mailoo.org>
parents: 779
diff changeset
763 def checkNode(node):
900987e1c0c4 memory: factorize the node checks in Params.__constructProfileXml
souliane <souliane@mailoo.org>
parents: 779
diff changeset
764 """Check the node against security_limit and app"""
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
765 return self.checkSecurityLimit(node, security_limit) and self.checkApp(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
766 node, app
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
767 )
784
900987e1c0c4 memory: factorize the node checks in Params.__constructProfileXml
souliane <souliane@mailoo.org>
parents: 779
diff changeset
768
592
e5a875a3311b Fix pep8 support in src/memory.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
769 def constructProfile(ignore, profile_cache):
634
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
770 # init the result document
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
771 prof_xml = minidom.parseString("<params/>")
423
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
772 cache = {}
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
773
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
774 for type_node in self.dom.documentElement.childNodes:
914
1a3ba959f0ab core (memory): moved Params in its own module + introduced a new core/constants module, and moved some constants there
Goffi <goffi@goffi.org>
parents: 909
diff changeset
775 if type_node.nodeName != C.GENERAL and type_node.nodeName != C.INDIVIDUAL:
634
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
776 continue
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
777 # we use all params, general and individual
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
778 for cat_node in type_node.childNodes:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
779 if cat_node.nodeName != "category":
634
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
780 continue
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
781 category = cat_node.getAttribute("name")
634
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
782 dest_params = {} # result (merged) params for category
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
783 if category not in cache:
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
784 # we make a copy for the new xml
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
785 cache[category] = dest_cat = cat_node.cloneNode(True)
1050
de415d7984f7 memory (params), test: fixes bug relative to parameter filtering
souliane <souliane@mailoo.org>
parents: 1044
diff changeset
786 to_remove = []
634
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
787 for node in dest_cat.childNodes:
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
788 if node.nodeName != "param":
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
789 continue
784
900987e1c0c4 memory: factorize the node checks in Params.__constructProfileXml
souliane <souliane@mailoo.org>
parents: 779
diff changeset
790 if not checkNode(node):
1050
de415d7984f7 memory (params), test: fixes bug relative to parameter filtering
souliane <souliane@mailoo.org>
parents: 1044
diff changeset
791 to_remove.append(node)
779
a978c703bf57 memory: bug fix related to method paramsRegisterApp + getParams was not always returning a Deferred
souliane <souliane@mailoo.org>
parents: 778
diff changeset
792 continue
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
793 dest_params[node.getAttribute("name")] = node
1050
de415d7984f7 memory (params), test: fixes bug relative to parameter filtering
souliane <souliane@mailoo.org>
parents: 1044
diff changeset
794 for node in to_remove:
de415d7984f7 memory (params), test: fixes bug relative to parameter filtering
souliane <souliane@mailoo.org>
parents: 1044
diff changeset
795 dest_cat.removeChild(node)
634
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
796 new_node = True
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
797 else:
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
798 # It's not a new node, we use the previously cloned one
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
799 dest_cat = cache[category]
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
800 new_node = False
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
801 params = cat_node.getElementsByTagName("param")
395
79fe50fc8edc memory: multiples params of the same category are now merged
Goffi <goffi@goffi.org>
parents: 392
diff changeset
802
634
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
803 for param_node in params:
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
804 # we have to merge new params (we are parsing individual parameters, we have to add them
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
805 # to the previously parsed general ones)
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
806 name = param_node.getAttribute("name")
784
900987e1c0c4 memory: factorize the node checks in Params.__constructProfileXml
souliane <souliane@mailoo.org>
parents: 779
diff changeset
807 if not checkNode(param_node):
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
808 continue
634
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
809 if name not in dest_params:
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
810 # this is reached when a previous category exists
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
811 dest_params[name] = param_node.cloneNode(True)
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
812 dest_cat.appendChild(dest_params[name])
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
813
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
814 profile_value = self._getParam(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
815 category,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
816 name,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
817 type_node.nodeName,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
818 cache=profile_cache,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
819 profile=profile,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
820 )
634
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
821 if profile_value is not None:
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
822 # there is a value for this profile, we must change the default
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
823 if dest_params[name].getAttribute("type") == "list":
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
824 for option in dest_params[name].getElementsByTagName(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
825 "option"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
826 ):
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
827 if option.getAttribute("value") == profile_value:
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
828 option.setAttribute("selected", "true")
968
75f3b3b430ff tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents: 944
diff changeset
829 else:
75f3b3b430ff tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents: 944
diff changeset
830 try:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
831 option.removeAttribute("selected")
968
75f3b3b430ff tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents: 944
diff changeset
832 except NotFoundErr:
75f3b3b430ff tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents: 944
diff changeset
833 pass
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
834 elif dest_params[name].getAttribute("type") == "jids_list":
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
835 jids = profile_value.split("\t")
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
836 for jid_elt in dest_params[name].getElementsByTagName(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
837 "jid"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
838 ):
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
839 dest_params[name].removeChild(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
840 jid_elt
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
841 ) # remove all default
1747
40b7f18ac704 memory (params): fixes loading user value and building params XML for jids_list type
souliane <souliane@mailoo.org>
parents: 1745
diff changeset
842 for jid_ in jids: # rebuilt the children with use values
1740
681fe91abcc0 memory (params): parameter jids_list values are specified with <jid>...</jid>
souliane <souliane@mailoo.org>
parents: 1739
diff changeset
843 try:
681fe91abcc0 memory (params): parameter jids_list values are specified with <jid>...</jid>
souliane <souliane@mailoo.org>
parents: 1739
diff changeset
844 jid.JID(jid_)
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
845 except (
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
846 RuntimeError,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
847 jid.InvalidFormat,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
848 AttributeError,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
849 ):
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
850 log.warning(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
851 u"Incorrect jid value found in jids list: [{}]".format(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
852 jid_
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
853 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
854 )
1740
681fe91abcc0 memory (params): parameter jids_list values are specified with <jid>...</jid>
souliane <souliane@mailoo.org>
parents: 1739
diff changeset
855 else:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
856 jid_elt = prof_xml.createElement("jid")
1747
40b7f18ac704 memory (params): fixes loading user value and building params XML for jids_list type
souliane <souliane@mailoo.org>
parents: 1745
diff changeset
857 jid_elt.appendChild(prof_xml.createTextNode(jid_))
1740
681fe91abcc0 memory (params): parameter jids_list values are specified with <jid>...</jid>
souliane <souliane@mailoo.org>
parents: 1739
diff changeset
858 dest_params[name].appendChild(jid_elt)
968
75f3b3b430ff tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents: 944
diff changeset
859 else:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
860 dest_params[name].setAttribute("value", profile_value)
634
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
861 if new_node:
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
862 prof_xml.documentElement.appendChild(dest_cat)
395
79fe50fc8edc memory: multiples params of the same category are now merged
Goffi <goffi@goffi.org>
parents: 392
diff changeset
863
634
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
864 to_remove = []
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
865 for cat_node in prof_xml.documentElement.childNodes:
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
866 # we remove empty categories
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
867 if cat_node.getElementsByTagName("param").length == 0:
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
868 to_remove.append(cat_node)
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
869 for node in to_remove:
ca2cae6b2c6d core: security attribute added to the parameters
souliane <souliane@mailoo.org>
parents: 625
diff changeset
870 prof_xml.documentElement.removeChild(node)
423
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
871 return prof_xml
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
872
592
e5a875a3311b Fix pep8 support in src/memory.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
873 if profile in self.params:
423
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
874 d = defer.succeed(None)
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
875 profile_cache = self.params[profile]
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
876 else:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
877 # profile is not in cache, we load values in a short time cache
423
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
878 profile_cache = {}
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
879 d = self.loadIndParams(profile, profile_cache)
395
79fe50fc8edc memory: multiples params of the same category are now merged
Goffi <goffi@goffi.org>
parents: 392
diff changeset
880
423
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
881 return d.addCallback(constructProfile, profile_cache)
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
882
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
883 def getParamsUI(self, security_limit, app, profile_key):
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
884 """
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
885 @param security_limit: NO_SECURITY_LIMIT (-1) to return all the params.
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
886 Otherwise sole the params which have a security level defined *and*
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
887 lower or equal to the specified value are returned.
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
888 @param app: name of the frontend requesting the parameters, or '' to get all parameters
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
889 @param profile_key: Profile key which can be either a magic (eg: @DEFAULT@) or the name of an existing profile.
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
890 @return: a SàT XMLUI for parameters
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
891 """
105
d2630fba8dfd params to XMLUI tools
Goffi <goffi@goffi.org>
parents: 79
diff changeset
892 profile = self.getProfileName(profile_key)
d2630fba8dfd params to XMLUI tools
Goffi <goffi@goffi.org>
parents: 79
diff changeset
893 if not profile:
993
301b342c697a core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents: 968
diff changeset
894 log.error(_("Asking params for inexistant profile"))
105
d2630fba8dfd params to XMLUI tools
Goffi <goffi@goffi.org>
parents: 79
diff changeset
895 return ""
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
896 d = self.getParams(security_limit, app, profile)
802
9007bb133009 core, frontends: XMLUI refactoring:
Goffi <goffi@goffi.org>
parents: 784
diff changeset
897 return d.addCallback(lambda param_xml: paramsXML2XMLUI(param_xml))
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
898
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
899 def getParams(self, security_limit, app, profile_key):
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
900 """Construct xml for asked profile, take params xml as skeleton
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
901
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
902 @param security_limit: NO_SECURITY_LIMIT (-1) to return all the params.
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
903 Otherwise sole the params which have a security level defined *and*
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
904 lower or equal to the specified value are returned.
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
905 @param app: name of the frontend requesting the parameters, or '' to get all parameters
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
906 @param profile_key: Profile key which can be either a magic (eg: @DEFAULT@) or the name of an existing profile.
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
907 @return: XML of parameters
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
908 """
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
909 profile = self.getProfileName(profile_key)
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
910 if not profile:
993
301b342c697a core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents: 968
diff changeset
911 log.error(_("Asking params for inexistant profile"))
779
a978c703bf57 memory: bug fix related to method paramsRegisterApp + getParams was not always returning a Deferred
souliane <souliane@mailoo.org>
parents: 778
diff changeset
912 return defer.succeed("")
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
913
423
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
914 def returnXML(prof_xml):
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
915 return_xml = prof_xml.toxml()
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
916 prof_xml.unlink()
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
917 return "\n".join((line for line in return_xml.split("\n") if line))
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
918
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
919 return self._constructProfileXml(security_limit, app, profile).addCallback(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
920 returnXML
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
921 )
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
922
722
04aabc3f2684 core (memory): fixed setDefault behaviour + minor refactoring
Goffi <goffi@goffi.org>
parents: 679
diff changeset
923 def _getParamNode(self, name, category, type_="@ALL@"): # FIXME: is type_ useful ?
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
924 """Return a node from the param_xml
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
925 @param name: name of the node
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
926 @param category: category of the node
1019
6a16ec17a458 better PEP-8 compliance
souliane <souliane@mailoo.org>
parents: 1015
diff changeset
927 @param type_: keyword for search:
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
928 @ALL@ search everywhere
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
929 @GENERAL@ only search in general type
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
930 @INDIVIDUAL@ only search in individual type
1019
6a16ec17a458 better PEP-8 compliance
souliane <souliane@mailoo.org>
parents: 1015
diff changeset
931 @return: a tuple (node type, node) or None if not found"""
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
932
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
933 for type_node in self.dom.documentElement.childNodes:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
934 if (
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
935 (type_ == "@ALL@" or type_ == "@GENERAL@")
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
936 and type_node.nodeName == C.GENERAL
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
937 ) or (
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
938 (type_ == "@ALL@" or type_ == "@INDIVIDUAL@")
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
939 and type_node.nodeName == C.INDIVIDUAL
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
940 ):
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
941 for node in type_node.getElementsByTagName("category"):
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
942 if node.getAttribute("name") == category:
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
943 params = node.getElementsByTagName("param")
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
944 for param in params:
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
945 if param.getAttribute("name") == name:
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
946 return (type_node.nodeName, param)
17
74a39f40eb6d refactoring: using xml params (not finished yet)
Goffi <goffi@goffi.org>
parents: 14
diff changeset
947 return None
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
948
17
74a39f40eb6d refactoring: using xml params (not finished yet)
Goffi <goffi@goffi.org>
parents: 14
diff changeset
949 def getParamsCategories(self):
74a39f40eb6d refactoring: using xml params (not finished yet)
Goffi <goffi@goffi.org>
parents: 14
diff changeset
950 """return the categories availables"""
592
e5a875a3311b Fix pep8 support in src/memory.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
951 categories = []
17
74a39f40eb6d refactoring: using xml params (not finished yet)
Goffi <goffi@goffi.org>
parents: 14
diff changeset
952 for cat in self.dom.getElementsByTagName("category"):
396
cecd22241d56 memory: avoid duplicate in getParamsCategories
Goffi <goffi@goffi.org>
parents: 395
diff changeset
953 name = cat.getAttribute("name")
cecd22241d56 memory: avoid duplicate in getParamsCategories
Goffi <goffi@goffi.org>
parents: 395
diff changeset
954 if name not in categories:
cecd22241d56 memory: avoid duplicate in getParamsCategories
Goffi <goffi@goffi.org>
parents: 395
diff changeset
955 categories.append(cat.getAttribute("name"))
17
74a39f40eb6d refactoring: using xml params (not finished yet)
Goffi <goffi@goffi.org>
parents: 14
diff changeset
956 return categories
74a39f40eb6d refactoring: using xml params (not finished yet)
Goffi <goffi@goffi.org>
parents: 14
diff changeset
957
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
958 def setParam(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
959 self,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
960 name,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
961 value,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
962 category,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
963 security_limit=C.NO_SECURITY_LIMIT,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
964 profile_key=C.PROF_KEY_NONE,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
965 ):
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
966 """Set a parameter, return None if the parameter is not in param xml.
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
967
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
968 Parameter of type 'password' that are not the SàT profile password are
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
969 stored encrypted (if not empty). The profile password is stored hashed
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
970 (if not empty).
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
971
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
972 @param name (str): the parameter name
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
973 @param value (str): the new value
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
974 @param category (str): the parameter category
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
975 @param security_limit (int)
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
976 @param profile_key (str): %(doc_profile_key)s
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
977 @return: a deferred None value when everything is done
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
978 """
1534
a5e0393a06cd plugin ip, params: plugin IP discovery, first draft:
Goffi <goffi@goffi.org>
parents: 1519
diff changeset
979 # FIXME: setParam should accept the right type for value, not only str !
916
1a759096ccbd core: use of Const for profile_key + replaced '@DEFAULT@' default profile_key by '@NONE@'
Goffi <goffi@goffi.org>
parents: 914
diff changeset
980 if profile_key != C.PROF_KEY_NONE:
392
20f11097d99b memory: general param default value fix
Goffi <goffi@goffi.org>
parents: 369
diff changeset
981 profile = self.getProfileName(profile_key)
20f11097d99b memory: general param default value fix
Goffi <goffi@goffi.org>
parents: 369
diff changeset
982 if not profile:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
983 log.error(_(u"Trying to set parameter for an unknown profile"))
1836
fb94f92dc740 core (params): return given profile for ProfileUnknownError
Goffi <goffi@goffi.org>
parents: 1766
diff changeset
984 raise exceptions.ProfileUnknownError(profile_key)
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
985
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
986 node = self._getParamNode(name, category, "@ALL@")
17
74a39f40eb6d refactoring: using xml params (not finished yet)
Goffi <goffi@goffi.org>
parents: 14
diff changeset
987 if not node:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
988 log.error(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
989 _(u"Requesting an unknown parameter (%(category)s/%(name)s)")
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
990 % {"category": category, "name": name}
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
991 )
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
992 return defer.succeed(None)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
993
656
7d6e5807504a bridge, memory: added the parameter security_limit to asyncGetParamA so it can be used from libervia. refactorization in memory.py are related to that.
souliane <souliane@mailoo.org>
parents: 645
diff changeset
994 if not self.checkSecurityLimit(node[1], security_limit):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
995 log.warning(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
996 _(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
997 u"Trying to set parameter '%(param)s' in category '%(cat)s' without authorization!!!"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
998 % {"param": name, "cat": category}
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
999 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1000 )
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1001 return defer.succeed(None)
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1002
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1003 type_ = node[1].getAttribute("type")
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1004 if type_ == "int":
1220
f91e7028e2c3 memory (params), tools (xml_tools), plugins, frontends: add "int" parameter type with "min" and "max" attributes
souliane <souliane@mailoo.org>
parents: 1090
diff changeset
1005 if not value: # replace with the default value (which might also be '')
f91e7028e2c3 memory (params), tools (xml_tools), plugins, frontends: add "int" parameter type with "min" and "max" attributes
souliane <souliane@mailoo.org>
parents: 1090
diff changeset
1006 value = node[1].getAttribute("value")
f91e7028e2c3 memory (params), tools (xml_tools), plugins, frontends: add "int" parameter type with "min" and "max" attributes
souliane <souliane@mailoo.org>
parents: 1090
diff changeset
1007 else:
f91e7028e2c3 memory (params), tools (xml_tools), plugins, frontends: add "int" parameter type with "min" and "max" attributes
souliane <souliane@mailoo.org>
parents: 1090
diff changeset
1008 try:
f91e7028e2c3 memory (params), tools (xml_tools), plugins, frontends: add "int" parameter type with "min" and "max" attributes
souliane <souliane@mailoo.org>
parents: 1090
diff changeset
1009 int(value)
f91e7028e2c3 memory (params), tools (xml_tools), plugins, frontends: add "int" parameter type with "min" and "max" attributes
souliane <souliane@mailoo.org>
parents: 1090
diff changeset
1010 except ValueError:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1011 log.debug(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1012 _(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1013 u"Trying to set parameter '%(param)s' in category '%(cat)s' with an non-integer value"
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1014 % {"param": name, "cat": category}
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1015 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1016 )
1220
f91e7028e2c3 memory (params), tools (xml_tools), plugins, frontends: add "int" parameter type with "min" and "max" attributes
souliane <souliane@mailoo.org>
parents: 1090
diff changeset
1017 return defer.succeed(None)
1226
72f25d671368 memory (params): use more generic param attribute "constraint" instead of "min" and "max"
souliane <souliane@mailoo.org>
parents: 1222
diff changeset
1018 if node[1].hasAttribute("constraint"):
72f25d671368 memory (params): use more generic param attribute "constraint" instead of "min" and "max"
souliane <souliane@mailoo.org>
parents: 1222
diff changeset
1019 constraint = node[1].getAttribute("constraint")
72f25d671368 memory (params): use more generic param attribute "constraint" instead of "min" and "max"
souliane <souliane@mailoo.org>
parents: 1222
diff changeset
1020 try:
72f25d671368 memory (params): use more generic param attribute "constraint" instead of "min" and "max"
souliane <souliane@mailoo.org>
parents: 1222
diff changeset
1021 min_, max_ = [int(limit) for limit in constraint.split(";")]
72f25d671368 memory (params): use more generic param attribute "constraint" instead of "min" and "max"
souliane <souliane@mailoo.org>
parents: 1222
diff changeset
1022 except ValueError:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1023 raise exceptions.InternalError(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1024 "Invalid integer parameter constraint: %s" % constraint
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1025 )
1226
72f25d671368 memory (params): use more generic param attribute "constraint" instead of "min" and "max"
souliane <souliane@mailoo.org>
parents: 1222
diff changeset
1026 value = str(min(max(int(value), min_), max_))
1220
f91e7028e2c3 memory (params), tools (xml_tools), plugins, frontends: add "int" parameter type with "min" and "max" attributes
souliane <souliane@mailoo.org>
parents: 1090
diff changeset
1027
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1028 log.info(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1029 _("Setting parameter (%(category)s, %(name)s) = %(value)s")
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1030 % {
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1031 "category": category,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1032 "name": name,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1033 "value": value if type_ != "password" else "********",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1034 }
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1035 )
641
49587e170f53 core: added the security_limit to setParam
souliane <souliane@mailoo.org>
parents: 639
diff changeset
1036
914
1a3ba959f0ab core (memory): moved Params in its own module + introduced a new core/constants module, and moved some constants there
Goffi <goffi@goffi.org>
parents: 909
diff changeset
1037 if node[0] == C.GENERAL:
60
9764e027ecc0 SàT: multi-profile parameters, first draft
Goffi <goffi@goffi.org>
parents: 57
diff changeset
1038 self.params_gen[(category, name)] = value
412
62b17854254e database integration: first draft
Goffi <goffi@goffi.org>
parents: 399
diff changeset
1039 self.storage.setGenParam(category, name, value)
423
6c20c76abdcc backend: - bridge async D-Bus method now automatically manage callback and errback, we just have to return a deferred
Goffi <goffi@goffi.org>
parents: 420
diff changeset
1040 for profile in self.storage.getProfilesList():
1688
59a94105b138 core(params): replaced isConnected by isSessionStarted for profile update signal when a general param is modified
Goffi <goffi@goffi.org>
parents: 1686
diff changeset
1041 if self.host.memory.isSessionStarted(profile):
392
20f11097d99b memory: general param default value fix
Goffi <goffi@goffi.org>
parents: 369
diff changeset
1042 self.host.bridge.paramUpdate(name, value, category, profile)
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1043 self.host.trigger.point(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1044 "paramUpdateTrigger", name, value, category, node[0], profile
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1045 )
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1046 return defer.succeed(None)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
1047
1477
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
1048 assert node[0] == C.INDIVIDUAL
ac522c4dab0e core (params): jids_list type management
Goffi <goffi@goffi.org>
parents: 1460
diff changeset
1049 assert profile_key != C.PROF_KEY_NONE
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 574
diff changeset
1050
722
04aabc3f2684 core (memory): fixed setDefault behaviour + minor refactoring
Goffi <goffi@goffi.org>
parents: 679
diff changeset
1051 if type_ == "button":
1409
3265a2639182 massive (preventive) addition of 'u' (unicode) before the strings passed to logging functions
souliane <souliane@mailoo.org>
parents: 1396
diff changeset
1052 log.debug(u"Clicked param button %s" % node.toxml())
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1053 return defer.succeed(None)
1686
1ed269c5f295 profile (params): fixed password setting: if profile was not connected, set was silently ignored
Goffi <goffi@goffi.org>
parents: 1651
diff changeset
1054 elif type_ == "password":
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1055 try:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1056 personal_key = self.host.memory.auth_sessions.profileGetUnique(profile)[
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1057 C.MEMORY_CRYPTO_KEY
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1058 ]
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1059 except TypeError:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1060 raise exceptions.InternalError(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1061 _("Trying to encrypt a password while the personal key is undefined!")
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1062 )
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1063 if (category, name) == C.PROFILE_PASS_PATH:
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1064 # using 'value' as the encryption key to encrypt another encryption key... could be confusing!
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1065 d = self.host.memory.encryptPersonalData(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1066 data_key=C.MEMORY_CRYPTO_KEY,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1067 data_value=personal_key,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1068 crypto_key=value,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1069 profile=profile,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1070 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1071 d.addCallback(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1072 lambda dummy: PasswordHasher.hash(value)
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1073 ) # profile password is hashed (empty value stays empty)
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1074 elif value: # other non empty passwords are encrypted with the personal key
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1075 d = BlockCipher.encrypt(personal_key, value)
1931
2c55e7e99ef3 core (memory/params): fixed exception when setting an empty password
Goffi <goffi@goffi.org>
parents: 1836
diff changeset
1076 else:
2c55e7e99ef3 core (memory/params): fixed exception when setting an empty password
Goffi <goffi@goffi.org>
parents: 1836
diff changeset
1077 d = defer.succeed(value)
1686
1ed269c5f295 profile (params): fixed password setting: if profile was not connected, set was silently ignored
Goffi <goffi@goffi.org>
parents: 1651
diff changeset
1078 else:
1ed269c5f295 profile (params): fixed password setting: if profile was not connected, set was silently ignored
Goffi <goffi@goffi.org>
parents: 1651
diff changeset
1079 d = defer.succeed(value)
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1080
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1081 def gotFinalValue(value):
1686
1ed269c5f295 profile (params): fixed password setting: if profile was not connected, set was silently ignored
Goffi <goffi@goffi.org>
parents: 1651
diff changeset
1082 if self.host.memory.isSessionStarted(profile):
412
62b17854254e database integration: first draft
Goffi <goffi@goffi.org>
parents: 399
diff changeset
1083 self.params[profile][(category, name)] = value
1686
1ed269c5f295 profile (params): fixed password setting: if profile was not connected, set was silently ignored
Goffi <goffi@goffi.org>
parents: 1651
diff changeset
1084 self.host.bridge.paramUpdate(name, value, category, profile)
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1085 self.host.trigger.point(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1086 "paramUpdateTrigger", name, value, category, node[0], profile
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1087 )
1686
1ed269c5f295 profile (params): fixed password setting: if profile was not connected, set was silently ignored
Goffi <goffi@goffi.org>
parents: 1651
diff changeset
1088 return self.storage.setIndParam(category, name, value, profile)
1ed269c5f295 profile (params): fixed password setting: if profile was not connected, set was silently ignored
Goffi <goffi@goffi.org>
parents: 1651
diff changeset
1089 else:
1ed269c5f295 profile (params): fixed password setting: if profile was not connected, set was silently ignored
Goffi <goffi@goffi.org>
parents: 1651
diff changeset
1090 raise exceptions.ProfileNotConnected
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1091
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1092 d.addCallback(gotFinalValue)
1686
1ed269c5f295 profile (params): fixed password setting: if profile was not connected, set was silently ignored
Goffi <goffi@goffi.org>
parents: 1651
diff changeset
1093 return d
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1094
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1095 def _getNodesOfTypes(self, attr_type, node_type="@ALL@"):
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1096 """Return all the nodes matching the given types.
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1097
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1098 TODO: using during the dev but not anymore... remove if not needed
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1099
1220
f91e7028e2c3 memory (params), tools (xml_tools), plugins, frontends: add "int" parameter type with "min" and "max" attributes
souliane <souliane@mailoo.org>
parents: 1090
diff changeset
1100 @param attr_type (str): the attribute type (string, text, password, bool, int, button, list)
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1101 @param node_type (str): keyword for filtering:
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1102 @ALL@ search everywhere
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1103 @GENERAL@ only search in general type
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1104 @INDIVIDUAL@ only search in individual type
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1105 @return: dict{tuple: node}: a dict {key, value} where:
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1106 - key is a couple (attribute category, attribute name)
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1107 - value is a node
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1108 """
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1109 ret = {}
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1110 for type_node in self.dom.documentElement.childNodes:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1111 if (
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1112 (node_type == "@ALL@" or node_type == "@GENERAL@")
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1113 and type_node.nodeName == C.GENERAL
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1114 ) or (
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1115 (node_type == "@ALL@" or node_type == "@INDIVIDUAL@")
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1116 and type_node.nodeName == C.INDIVIDUAL
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1117 ):
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1118 for cat_node in type_node.getElementsByTagName("category"):
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
1119 cat = cat_node.getAttribute("name")
1030
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1120 params = cat_node.getElementsByTagName("param")
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1121 for param in params:
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1122 if param.getAttribute("type") == attr_type:
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1123 ret[(cat, param.getAttribute("name"))] = param
15f43b54d697 core, memory, bridge: added profile password + password encryption:
souliane <souliane@mailoo.org>
parents: 1023
diff changeset
1124 return ret
17
74a39f40eb6d refactoring: using xml params (not finished yet)
Goffi <goffi@goffi.org>
parents: 14
diff changeset
1125
656
7d6e5807504a bridge, memory: added the parameter security_limit to asyncGetParamA so it can be used from libervia. refactorization in memory.py are related to that.
souliane <souliane@mailoo.org>
parents: 645
diff changeset
1126 def checkSecurityLimit(self, node, security_limit):
7d6e5807504a bridge, memory: added the parameter security_limit to asyncGetParamA so it can be used from libervia. refactorization in memory.py are related to that.
souliane <souliane@mailoo.org>
parents: 645
diff changeset
1127 """Check the given node against the given security limit.
7d6e5807504a bridge, memory: added the parameter security_limit to asyncGetParamA so it can be used from libervia. refactorization in memory.py are related to that.
souliane <souliane@mailoo.org>
parents: 645
diff changeset
1128 The value NO_SECURITY_LIMIT (-1) means that everything is allowed.
7d6e5807504a bridge, memory: added the parameter security_limit to asyncGetParamA so it can be used from libervia. refactorization in memory.py are related to that.
souliane <souliane@mailoo.org>
parents: 645
diff changeset
1129 @return: True if this node can be accessed with the given security limit.
7d6e5807504a bridge, memory: added the parameter security_limit to asyncGetParamA so it can be used from libervia. refactorization in memory.py are related to that.
souliane <souliane@mailoo.org>
parents: 645
diff changeset
1130 """
7d6e5807504a bridge, memory: added the parameter security_limit to asyncGetParamA so it can be used from libervia. refactorization in memory.py are related to that.
souliane <souliane@mailoo.org>
parents: 645
diff changeset
1131 if security_limit < 0:
7d6e5807504a bridge, memory: added the parameter security_limit to asyncGetParamA so it can be used from libervia. refactorization in memory.py are related to that.
souliane <souliane@mailoo.org>
parents: 645
diff changeset
1132 return True
7d6e5807504a bridge, memory: added the parameter security_limit to asyncGetParamA so it can be used from libervia. refactorization in memory.py are related to that.
souliane <souliane@mailoo.org>
parents: 645
diff changeset
1133 if node.hasAttribute("security"):
7d6e5807504a bridge, memory: added the parameter security_limit to asyncGetParamA so it can be used from libervia. refactorization in memory.py are related to that.
souliane <souliane@mailoo.org>
parents: 645
diff changeset
1134 if int(node.getAttribute("security")) <= security_limit:
7d6e5807504a bridge, memory: added the parameter security_limit to asyncGetParamA so it can be used from libervia. refactorization in memory.py are related to that.
souliane <souliane@mailoo.org>
parents: 645
diff changeset
1135 return True
7d6e5807504a bridge, memory: added the parameter security_limit to asyncGetParamA so it can be used from libervia. refactorization in memory.py are related to that.
souliane <souliane@mailoo.org>
parents: 645
diff changeset
1136 return False
7d6e5807504a bridge, memory: added the parameter security_limit to asyncGetParamA so it can be used from libervia. refactorization in memory.py are related to that.
souliane <souliane@mailoo.org>
parents: 645
diff changeset
1137
777
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
1138 def checkApp(self, node, app):
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
1139 """Check the given node against the given app.
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
1140 @param node: parameter node
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
1141 @param app: name of the frontend requesting the parameters, or '' to get all parameters
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
1142 @return: True if this node concerns the given app.
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
1143 """
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
1144 if not app or not node.hasAttribute("app"):
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
1145 return True
5642939d254e core, bridge: new method paramsRegisterApp to register frontend's specific parameters
souliane <souliane@mailoo.org>
parents: 771
diff changeset
1146 return node.getAttribute("app") == app