Mercurial > libervia-backend
comparison src/memory/params.py @ 1039:902c764a0d2b
memory (params): fix parameters of type "list" to use the default option when no individual value is set
author | souliane <souliane@mailoo.org> |
---|---|
date | Tue, 20 May 2014 09:34:02 +0200 |
parents | 6e975c6b0faf |
children | 59de0c7a28ec |
comparison
equal
deleted
inserted
replaced
1038:d732bb68b326 | 1039:902c764a0d2b |
---|---|
327 """ | 327 """ |
328 if attr == 'value': | 328 if attr == 'value': |
329 value_to_use = value if value is not None else node.getAttribute(attr) # we use value (user defined) if it exist, else we use node's default value | 329 value_to_use = value if value is not None else node.getAttribute(attr) # we use value (user defined) if it exist, else we use node's default value |
330 if node.getAttribute('type') == 'bool': | 330 if node.getAttribute('type') == 'bool': |
331 return value_to_use.lower() not in ('false', '0', 'no') | 331 return value_to_use.lower() not in ('false', '0', 'no') |
332 elif node.getAttribute('type') == 'list': | |
333 options = [option for option in node.childNodes if option.nodeName == 'option'] | |
334 values = [option.getAttribute('value') for option in options] | |
335 if value_to_use not in values: # value_to_use is probably empty | |
336 selected = [option for option in options if option.getAttribute('selected') == 'true'] | |
337 cat, param = node.parentNode.getAttribute('name'), node.getAttribute('name') | |
338 if len(selected) == 1: | |
339 value_to_use = selected[0].getAttribute('value') | |
340 log.info(_("Unset parameter (%(cat)s, %(param)s) of type list will use the default option '%(value)s'") % | |
341 {'cat': cat, 'param': param, 'value': value_to_use}) | |
342 return value_to_use | |
343 if len(selected) == 0: | |
344 log.error(_('Parameter (%(cat)s, %(param)s) of type list has no default option!') % {'cat': cat, 'param': param}) | |
345 else: | |
346 log.error(_('Parameter (%(cat)s, %(param)s) of type list has more than one default option!') % {'cat': cat, 'param': param}) | |
347 raise exceptions.DataError | |
332 return value_to_use | 348 return value_to_use |
333 return node.getAttribute(attr) | 349 return node.getAttribute(attr) |
334 | 350 |
335 def _getAttr(self, node, attr, value): | 351 def _getAttr(self, node, attr, value): |
336 """Get attribute value (synchronous). | 352 """Get attribute value (synchronous). |