diff --git a/frontends/src/jp/cmd_profile.py b/frontends/src/jp/cmd_profile.py index 43c88f04..49032191 100644 --- a/frontends/src/jp/cmd_profile.py +++ b/frontends/src/jp/cmd_profile.py @@ -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 @@ __commands__ = ["Profile"] 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 @@ class ProfileDelete(base.CommandBase): 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 @@ class ProfileInfo(base.CommandBase): 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 @@ class ProfileCreate(base.CommandBase): """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 @@ class ProfileModify(base.CommandBase): 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'))