annotate frontends/src/jp/cmd_param.py @ 1596:b7ee113183fc

jp: better profile commands: - new "profile/default" command - info doesn't show password anymore by default, need to be explicitly requested - info and modify don't need to connect anymore - modify can now set default profile. As use_profile is set, at least a profile session need to be started when it would not be mandatory technicaly (if just setting the profile as default is needed). But this option should not be used often, and it's not a big side effect, so I don't feel the need to create a new dedicated command, or to do complicated checks to avoid the session start.
author Goffi <goffi@goffi.org>
date Sat, 14 Nov 2015 19:18:10 +0100
parents 313f2bb7841b
children d17772b0fe22
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1015
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
1 #! /usr/bin/python
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
3
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
4 # jp: a SAT command line tool
1396
069ad98b360d 2015 copyright dates update
Goffi <goffi@goffi.org>
parents: 1015
diff changeset
5 # Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015 Jérôme Poisson (goffi@goffi.org)
069ad98b360d 2015 copyright dates update
Goffi <goffi@goffi.org>
parents: 1015
diff changeset
6 # Copyright (C) 2013, 2014, 2015 Adrien Cossa (souliane@mailoo.org)
1015
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
7
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
8 # This program is free software: you can redistribute it and/or modify
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
9 # it under the terms of the GNU Affero General Public License as published by
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
10 # the Free Software Foundation, either version 3 of the License, or
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
11 # (at your option) any later version.
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
12
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
13 # This program is distributed in the hope that it will be useful,
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
16 # GNU Affero General Public License for more details.
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
17
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
18 # You should have received a copy of the GNU Affero General Public License
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
19 # along with this program. If not, see <http://www.gnu.org/licenses/>.
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
20
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
21
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
22 import base
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
23 from sat.core.i18n import _
1545
b8ee774c12c8 jp: renamed “params” command to “param” for consistency with other commands + added a “get” subcommand
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
24 __commands__ = ["Param"]
1015
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
25
1545
b8ee774c12c8 jp: renamed “params” command to “param” for consistency with other commands + added a “get” subcommand
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
26
b8ee774c12c8 jp: renamed “params” command to “param” for consistency with other commands + added a “get” subcommand
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
27 class Get(base.CommandBase):
b8ee774c12c8 jp: renamed “params” command to “param” for consistency with other commands + added a “get” subcommand
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
28 def __init__(self, host):
1594
313f2bb7841b jp: profile session can now be started without connection:
Goffi <goffi@goffi.org>
parents: 1593
diff changeset
29 super(Get, self).__init__(host, 'get', need_connect=False, help=_('Get a parameter value'))
1545
b8ee774c12c8 jp: renamed “params” command to “param” for consistency with other commands + added a “get” subcommand
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
30
b8ee774c12c8 jp: renamed “params” command to “param” for consistency with other commands + added a “get” subcommand
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
31 def add_parser_options(self):
1589
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
32 self.parser.add_argument("category", nargs='?', type=base.unicode_decoder, help=_(u"Category of the parameter"))
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
33 self.parser.add_argument("name", nargs='?', type=base.unicode_decoder, help=_(u"Name of the parameter"))
1545
b8ee774c12c8 jp: renamed “params” command to “param” for consistency with other commands + added a “get” subcommand
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
34 self.parser.add_argument("-a", "--attribute", type=str, default="value", help=_(u"Name of the attribute to get"))
b8ee774c12c8 jp: renamed “params” command to “param” for consistency with other commands + added a “get” subcommand
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
35 self.parser.add_argument("--security-limit", type=int, default=-1, help=_(u"Security limit"))
b8ee774c12c8 jp: renamed “params” command to “param” for consistency with other commands + added a “get” subcommand
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
36
b8ee774c12c8 jp: renamed “params” command to “param” for consistency with other commands + added a “get” subcommand
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
37 def connected(self):
b8ee774c12c8 jp: renamed “params” command to “param” for consistency with other commands + added a “get” subcommand
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
38 super(Get, self).connected()
1589
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
39 if self.args.category is None:
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
40 categories = self.host.bridge.getParamsCategories()
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
41 print u"\n".join(categories)
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
42 elif self.args.name is None:
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
43 try:
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
44 values_dict = self.host.bridge.asyncGetParamsValuesFromCategory(self.args.category, self.args.security_limit, self.profile)
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
45 except Exception as e:
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
46 print u"Can't find requested parameters: {}".format(e)
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
47 self.host.quit(1)
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
48 for name, value in values_dict.iteritems():
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
49 print u"{}\t{}".format(name, value)
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
50 else:
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
51 try:
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
52 value = self.host.bridge.asyncGetParamA(self.args.name, self.args.category, self.args.attribute,
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
53 self.args.security_limit, self.profile)
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
54 except Exception as e:
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
55 print u"Can't find requested parameter: {}".format(e)
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
56 self.host.quit(1)
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
57 print value
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
58
add1a6c8c594 jp: optional positional arguments on "param get" command
Goffi <goffi@goffi.org>
parents: 1545
diff changeset
59
1593
791c45ed8659 jp: added param/set command
Goffi <goffi@goffi.org>
parents: 1589
diff changeset
60 class Set(base.CommandBase):
791c45ed8659 jp: added param/set command
Goffi <goffi@goffi.org>
parents: 1589
diff changeset
61 def __init__(self, host):
1594
313f2bb7841b jp: profile session can now be started without connection:
Goffi <goffi@goffi.org>
parents: 1593
diff changeset
62 super(Set, self).__init__(host, 'set', need_connect=False, help=_('Set a parameter value'))
1593
791c45ed8659 jp: added param/set command
Goffi <goffi@goffi.org>
parents: 1589
diff changeset
63
791c45ed8659 jp: added param/set command
Goffi <goffi@goffi.org>
parents: 1589
diff changeset
64 def add_parser_options(self):
791c45ed8659 jp: added param/set command
Goffi <goffi@goffi.org>
parents: 1589
diff changeset
65 self.parser.add_argument("category", type=base.unicode_decoder, help=_(u"Category of the parameter"))
791c45ed8659 jp: added param/set command
Goffi <goffi@goffi.org>
parents: 1589
diff changeset
66 self.parser.add_argument("name", type=base.unicode_decoder, help=_(u"Name of the parameter"))
791c45ed8659 jp: added param/set command
Goffi <goffi@goffi.org>
parents: 1589
diff changeset
67 self.parser.add_argument("value", type=base.unicode_decoder, help=_(u"Name of the parameter"))
791c45ed8659 jp: added param/set command
Goffi <goffi@goffi.org>
parents: 1589
diff changeset
68 self.parser.add_argument("--security-limit", type=int, default=-1, help=_(u"Security limit"))
791c45ed8659 jp: added param/set command
Goffi <goffi@goffi.org>
parents: 1589
diff changeset
69
791c45ed8659 jp: added param/set command
Goffi <goffi@goffi.org>
parents: 1589
diff changeset
70 def connected(self):
791c45ed8659 jp: added param/set command
Goffi <goffi@goffi.org>
parents: 1589
diff changeset
71 super(Set, self).connected()
1545
b8ee774c12c8 jp: renamed “params” command to “param” for consistency with other commands + added a “get” subcommand
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
72 try:
1593
791c45ed8659 jp: added param/set command
Goffi <goffi@goffi.org>
parents: 1589
diff changeset
73 self.host.bridge.setParam(self.args.name, self.args.value, self.args.category, self.args.security_limit, self.profile)
791c45ed8659 jp: added param/set command
Goffi <goffi@goffi.org>
parents: 1589
diff changeset
74 except Exception as e:
791c45ed8659 jp: added param/set command
Goffi <goffi@goffi.org>
parents: 1589
diff changeset
75 print u"Can set requested parameter: {}".format(e)
1015
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
76
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
77
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
78 class SaveTemplate(base.CommandBase):
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
79 def __init__(self, host):
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
80 super(SaveTemplate, self).__init__(host, 'save', use_profile=False, help=_('Save parameters template to xml file'))
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
81
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
82 def add_parser_options(self):
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
83 self.parser.add_argument("filename", type=str, help=_("Output file"))
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
84
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
85 def run(self):
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
86 """Save parameters template to xml file"""
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
87 if self.host.bridge.saveParamsTemplate(self.args.filename):
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
88 print _("Parameters saved to file %s") % self.args.filename
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
89 else:
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
90 print _("Can't save parameters to file %s") % self.args.filename
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
91
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
92
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
93 class LoadTemplate(base.CommandBase):
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
94
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
95 def __init__(self, host):
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
96 super(LoadTemplate, self).__init__(host, 'load', use_profile=False, help=_('Load parameters template from xml file'))
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
97
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
98 def add_parser_options(self):
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
99 self.parser.add_argument("filename", type=str, help=_("Input file"))
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
100
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
101 def run(self):
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
102 """Load parameters template from xml file"""
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
103 if self.host.bridge.loadParamsTemplate(self.args.filename):
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
104 print _("Parameters loaded from file %s") % self.args.filename
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
105 else:
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
106 print _("Can't load parameters from file %s") % self.args.filename
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
107
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
108
1545
b8ee774c12c8 jp: renamed “params” command to “param” for consistency with other commands + added a “get” subcommand
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
109 class Param(base.CommandBase):
1593
791c45ed8659 jp: added param/set command
Goffi <goffi@goffi.org>
parents: 1589
diff changeset
110 subcommands = (Get, Set, SaveTemplate, LoadTemplate)
1015
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
111
fee00f2e11c2 memory, jp: added jp commands to load/save parameters template
souliane <souliane@mailoo.org>
parents:
diff changeset
112 def __init__(self, host):
1545
b8ee774c12c8 jp: renamed “params” command to “param” for consistency with other commands + added a “get” subcommand
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
113 super(Param, self).__init__(host, 'param', use_profile=False, help=_('Save/load parameters template'))