at_index to check owners
authorgwen <gremond@cadoles.com>
Thu, 8 Nov 2012 08:57:29 +0000 (09:57 +0100)
committergwen <gremond@cadoles.com>
Thu, 8 Nov 2012 08:57:29 +0000 (09:57 +0100)
tiramisu/option.py

index da0b49e..2af9de0 100644 (file)
@@ -220,17 +220,21 @@ class Option(HiddenBaseType, DisabledBaseType):
         "config *must* be only the **parent** config (not the toplevel config)"
         return config._cfgimpl_value_owners[self._name]
 
-    def is_default_owner(self, config, all_default=True):
+    def is_default_owner(self, config, all_default=True, at_index=None):
         """
         :param config: *must* be only the **parent** config
         (not the toplevel config)
         :param all_default: only for multi options, if True and the owner list
         has something else than "default" returns False, if False and the owner
         list has at least one "default" owner, returns True
+        :param at_index: only for multi options, checks owner at specified
+        index
         :return: boolean
         """
         if self.is_multi():
             owners = self.getowner(config)
+            if at_index:
+                return owners[at_index] == 'default'
             for owner in owners:
                 if all_default and owner != 'default':
                     return False
@@ -241,9 +245,9 @@ class Option(HiddenBaseType, DisabledBaseType):
             else:
                 return False
         else:
-            if self.getowner(config) == 'default':
-                return True
-            return False
+            if at_index:
+                raise ValueError('index specified for a not multi option')
+            return self.getowner(config) == 'default'
 
     def setoption(self, config, value, who):
         """changes the option's value with the value_owner's who