# HG changeset patch # User Goffi # Date 1447525090 -3600 # Node ID b7ee113183fc5157d7d2b8509ed93150bc7104c7 # Parent a3d0cfa5b7a60cf6dcc7b2f1011d41938bbc8376 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. diff -r a3d0cfa5b7a6 -r b7ee113183fc frontends/src/jp/cmd_profile.py --- a/frontends/src/jp/cmd_profile.py Sat Nov 14 19:18:10 2015 +0100 +++ b/frontends/src/jp/cmd_profile.py Sat Nov 14 19:18:10 2015 +0100 @@ -20,7 +20,7 @@ """This module permits to manage profiles. It can list, create, delete and retrieve information about a profile.""" -from logging import debug, info, error, warning +import logging as log from sat.core.i18n import _ from sat_frontends.jp import base @@ -29,9 +29,20 @@ PROFILE_HELP = _('The name of the profile') +class ProfileDefault(base.CommandBase): + def __init__(self, host): + super(ProfileDefault, self).__init__(host, 'default', use_profile=False, help=_('print default profile')) + + def add_parser_options(self): + pass + + def run(self): + print self.host.bridge.getProfileName('@DEFAULT@') + + class ProfileDelete(base.CommandBase): def __init__(self, host): - super(ProfileDelete, self).__init__(host, 'delete', use_profile=False, help=_('Delete a profile')) + super(ProfileDelete, self).__init__(host, 'delete', use_profile=False, help=_('delete a profile')) def add_parser_options(self): self.parser.add_argument('profile', type=str, help=PROFILE_HELP) @@ -39,22 +50,20 @@ def run(self): super(ProfileDelete, self).run() if self.args.profile not in self.host.bridge.getProfilesList(): - error("Profile %s doesn't exist." % self.args.profile) + log.error("Profile %s doesn't exist." % self.args.profile) self.host.quit(1) self.host.bridge.asyncDeleteProfile(self.args.profile, callback=lambda dummy: None) class ProfileInfo(base.CommandBase): def __init__(self, host): - super(ProfileInfo, self).__init__(host, 'info', help=_('Get information about a profile')) - self.to_show = [(_(u"jid"), "Connection", "JabberID"), - (_(u"XMPP password"), "Connection", "Password"), - ] + super(ProfileInfo, self).__init__(host, 'info', need_connect=False, help=_('get information about a profile')) + self.to_show = [(_(u"jid"), "Connection", "JabberID"),] self.largest = max([len(item[0]) for item in self.to_show]) def add_parser_options(self): - pass + self.parser.add_argument('--show-password', action='store_true', help=_(u'show the XMPP password IN CLEAR TEXT')) def showNextValue(self, label=None, category=None, value=None): """Show next value from self.to_show and quit on last one""" @@ -71,12 +80,14 @@ def connected(self): self.need_loop = True super(ProfileInfo, self).connected() + if self.args.show_password: + self.to_show.append((_(u"XMPP password"), "Connection", "Password")) self.showNextValue() class ProfileList(base.CommandBase): def __init__(self, host): - super(ProfileList, self).__init__(host, 'list', use_profile=False, help=_('List profiles')) + super(ProfileList, self).__init__(host, 'list', use_profile=False, help=_('list profiles')) def add_parser_options(self): pass @@ -110,20 +121,21 @@ """Create a new profile""" self.need_loop = True if self.args.profile in self.host.bridge.getProfilesList(): - error("Profile %s already exists." % self.args.profile) + log.error("Profile %s already exists." % self.args.profile) self.host.quit(1) self.host.bridge.asyncCreateProfile(self.args.profile, self.args.password, callback=self._profile_created, errback=None) class ProfileModify(base.CommandBase): def __init__(self, host): - super(ProfileModify, self).__init__(host, 'modify', help=_('Modify an existing profile')) + super(ProfileModify, self).__init__(host, 'modify', need_connect=False, help=_('Modify an existing profile')) def add_parser_options(self): self.parser.add_argument('-w', '--password', type=str, default='', help=_('the password of the profile')) self.parser.add_argument('-j', '--jid', type=str, help=_('the jid of the profile')) self.parser.add_argument('-x', '--xmpp-password', type=str, help=_('the password of the XMPP account'), metavar='PASSWORD') + self.parser.add_argument('-D', '--default', action='store_true', help=_(u'set as default profile')) def _profile_created(self): if self.args.jid: @@ -141,10 +153,12 @@ self.host.bridge.setParam("JabberID", self.args.jid, "Connection", profile_key=self.host.profile) if self.args.xmpp_password is not None: self.host.bridge.setParam("Password", self.args.xmpp_password, "Connection", profile_key=self.host.profile) + if self.args.default: + self.host.bridge.profileSetDefault(self.host.profile) class Profile(base.CommandBase): - subcommands = (ProfileDelete, ProfileInfo, ProfileList, ProfileCreate, ProfileModify) + subcommands = (ProfileCreate, ProfileDefault, ProfileDelete, ProfileInfo, ProfileList, ProfileModify) def __init__(self, host): super(Profile, self).__init__(host, 'profile', use_profile=False, help=_('Profile commands'))