Skip to content
Snippets Groups Projects
Commit efdaa530 authored by jkerdreu's avatar jkerdreu
Browse files

Fix optionnal parameter for actions, and add the _var pattern

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/fork@1606 b32b6428-25c9-4566-ad07-03861ab6144f
parent 2ee3824f
No related branches found
No related tags found
No related merge requests found
......@@ -354,13 +354,23 @@ def run_action(msg, device):
if msg.action in methods.keys():
method = methods[msg.action]
if msg.body:
args = get_args_method(method)
method_params = get_args_method(method)
body_params = msg.get_parameters()
for k in body_params:
temp = '_%s' %k
if temp in method_params:
params.update({temp:body_params[k]})
else:
logger.info("Wrong method parameter %s for action %s" %(k, msg.action))
"""
try:
body_params = msg.get_parameters(args)
except KeyError as e:
raise XAALError("Wrong method parameter %s for action %s" %(e.message, msg.action))
for p in range(0, len(args)):
params[args[p]] = body_params[args[p]]
"""
result = method(**params)
else:
......@@ -368,12 +378,13 @@ def run_action(msg, device):
return result
def get_args_method(method):
args = inspect.getargspec(method)
""" return the list on arguments for a given method """
spec = inspect.getargspec(method)
try:
args.args.remove('self')
spec.args.remove('self')
except:
pass
return args.args
return spec.args
class XAALEngineError:pass
......
......@@ -277,7 +277,7 @@ class Message(object):
#####################################################
# Body
#####################################################
def get_parameters(self, args):
def _get_parameters(self, args):
parameters = {}
for p in range(0, len(args)):
if isinstance(self.body[args[p]], str):
......@@ -288,6 +288,10 @@ class Message(object):
parameters[args[p]] = param
return parameters
def get_parameters(self):
""" request parameters are in body hash, return asis"""
return self.body
#####################################################
def dump(self):
""" dump log a message """
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment