core, bridge: added a profileSetDefault method

This commit is contained in:
Goffi 2015-11-14 19:18:10 +01:00
commit 182f192703
6 changed files with 40 additions and 2 deletions

View file

@ -557,6 +557,20 @@ class DBusBridgeFrontend(BridgeFrontend):
kwargs['error_handler'] = error_handler
return self.db_core_iface.profileIsSessionStarted(profile_key, **kwargs)
def profileSetDefault(self, arg_0, callback=None, errback=None):
if callback is None:
error_handler = None
else:
if errback is None:
errback = log.error
error_handler = lambda err:errback(dbus_to_bridge_exception(err))
kwargs={}
if callback is not None:
kwargs['timeout'] = const_TIMEOUT
kwargs['reply_handler'] = callback
kwargs['error_handler'] = error_handler
return self.db_core_iface.profileSetDefault(arg_0, **kwargs)
def profileStartSession(self, password='', profile_key="@DEFAULT@", callback=None, errback=None):
if callback is None:
error_handler = None

View file

@ -428,6 +428,12 @@ class DbusObject(dbus.service.Object):
def profileIsSessionStarted(self, profile_key="@DEFAULT@"):
return self._callback("profileIsSessionStarted", unicode(profile_key))
@dbus.service.method(const_INT_PREFIX+const_CORE_SUFFIX,
in_signature='s', out_signature='',
async_callbacks=None)
def profileSetDefault(self, arg_0):
return self._callback("profileSetDefault", unicode(arg_0))
@dbus.service.method(const_INT_PREFIX+const_CORE_SUFFIX,
in_signature='ss', out_signature='b',
async_callbacks=('callback', 'errback'))

View file

@ -220,7 +220,7 @@ sig_out=s
param_0_default="@DEFAULT@"
doc=Get real profile name from profile key
doc_param_0=%(doc_profile_key)s
doc_return=Real profile name, or empty string if the profile doesn't exist
doc_return=Real profile name
[getProfilesList]
type=method
@ -229,6 +229,13 @@ sig_in=
sig_out=as
doc=Get all profiles
[profileSetDefault]
type=method
category=core
sig_in=s
sig_out=
doc=Set default profile
[getEntityData]
type=method
category=core

View file

@ -76,6 +76,7 @@ class SAT(service.Service):
self.bridge.register("asyncDeleteProfile", self.memory.asyncDeleteProfile)
self.bridge.register("profileStartSession", self.memory._startSession)
self.bridge.register("profileIsSessionStarted", self.memory._isSessionStarted)
self.bridge.register("profileSetDefault", self.memory.profileSetDefault)
self.bridge.register("asyncConnect", self._asyncConnect)
self.bridge.register("disconnect", self.disconnect)
self.bridge.register("getContacts", self.getContacts)

View file

@ -433,6 +433,16 @@ class Memory(object):
"""
return self.params.getProfileName(profile_key, return_profile_keys)
def profileSetDefault(self, profile):
"""Set default profile
@param profile: %(doc_profile)s
"""
# we want to be sure that the profile exists
profile = self.getProfileName(profile)
self.memory_data['Profile_default'] = profile
def asyncCreateProfile(self, name, password=''):
"""Create a new profile
@param name: profile name

View file

@ -200,7 +200,7 @@ class Params(object):
if profile_key == '@DEFAULT@':
default = self.host.memory.memory_data.get('Profile_default')
if not default:
log.info(_('No default profile, returning first one')) # TODO: manage real default profile
log.info(_('No default profile, returning first one'))
try:
default = self.host.memory.memory_data['Profile_default'] = self.storage.getProfilesList()[0]
except IndexError: