Mercurial > libervia-backend
diff frontends/src/jp/profile.py @ 814:59c7bc51c323
jp: refactoring using ArgParse
author | Dal <kedals0@gmail.com> |
---|---|
date | Wed, 05 Feb 2014 14:35:26 +0100 |
parents | frontends/src/jp/jp@1fe00f0c9a91 |
children | f8d534ed1d1e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frontends/src/jp/profile.py Wed Feb 05 14:35:26 2014 +0100 @@ -0,0 +1,111 @@ +"""This module permits to manage profiles. It can list, create, delete +and retrieve informations about a profile.""" + +import base +import sys + +from logging import debug, info, error, warning +from sat.core.i18n import _ + +profile_parser = base.subparser.add_parser('profile', + help = "Profile Commands") +profile_subparser = profile_parser.add_subparsers() + +################################################################################ +# DELETE # +################################################################################ +profile_delete = profile_subparser.add_parser('delete', + help = "Delete a profile") +profile_delete.add_argument('profile', type=str, + help='the name of the profile') +profile_delete.set_defaults( + func = lambda args : ProfileDelete(args.profile).go()) + +class ProfileDelete(base.JP): + def __init__(self, profile_name): + base.JP.__init__(self) + self.profile_name = profile_name + + def run(self): + if self.profile_name not in self.bridge.getProfilesList(): + error("Profile %s doesn't exist."%self.profile_name) + exit(1) + self.bridge.deleteProfile(self.profile_name) + +################################################################################ +# INFO # +################################################################################ +profile_info = profile_subparser.add_parser('info', + help = "Get informations about a profile") +profile_info.add_argument('profile', type=str, + help='the name of the profile') +profile_info.set_defaults( + func = lambda args : ProfileInfo(args.profile).go()) + +class ProfileInfo(base.JP): + def __init__(self, profile_name): + base.JP.__init__(self) + self.profile_name = profile_name + + def run(self): + def getJID(jid): + info("jid: %s"%jid) + self.bridge.asyncGetParamA("Password", "Connection", profile_key=self.profile_name, callback=getPassword) + def getPassword(password): + info("pwd: %s"%password) + self.loop.quit() + if self.profile_name not in self.bridge.getProfilesList(): + error("Profile %s doesn't exist."%self.profile_name) + exit(1) + + self.start_mainloop() + self.bridge.asyncGetParamA("JabberID", "Connection", profile_key=self.profile_name, callback=getJID) + +################################################################################ +# LIST # +################################################################################ +profile_list = profile_subparser.add_parser('list', + help = "List profiles") +profile_list.set_defaults( + func = lambda args : ProfileList().go()) + +class ProfileList(base.JP): + def run(self): + for p in self.bridge.getProfilesList(): + info(p) + +################################################################################ +# CREATE # +################################################################################ +create_parser = profile_subparser.add_parser('create', + help = "Create a new profile") +create_parser.add_argument('profile', type=str, + help='the name of the profile') +create_parser.add_argument('jid', type=str, + help='the jid of the profile') +create_parser.add_argument('password', type=str, + help='the password of the profile') +create_parser.set_defaults( + func = lambda args : ProfileCreate(args.profile, args.jid, args.password).go()) + +class ProfileCreate(base.JP): + def __init__(self, profile_name, jid, password): + base.JP.__init__(self) + self.profile_name = profile_name + self.jid = jid + self.password = password + + def _create_profile(self, profile_name, jid, password): + self.bridge.setParam("JabberID", jid, "Connection" ,profile_key=profile_name) + self.bridge.setParam("Server", base.JID(jid).domain, "Connection", profile_key=profile_name) + self.bridge.setParam("Password", password, "Connection", profile_key=profile_name) + self.loop.quit() + + def run(self): + """Create a new profile""" + if self.profile_name in self.bridge.getProfilesList(): + error("Profile %s already exists."%self.profile_name) + exit(1) + self.start_mainloop() + self.bridge.asyncCreateProfile(self.profile_name, lambda : self._create_profile(self.profile_name, self.jid, self.password), None) +