diff options
Diffstat (limited to 'grc/core/utils/descriptors/evaluated.py')
-rw-r--r-- | grc/core/utils/descriptors/evaluated.py | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/grc/core/utils/descriptors/evaluated.py b/grc/core/utils/descriptors/evaluated.py index 313cee5b96..0e1b68761c 100644 --- a/grc/core/utils/descriptors/evaluated.py +++ b/grc/core/utils/descriptors/evaluated.py @@ -15,6 +15,10 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA +from __future__ import absolute_import + +import six + class Evaluated(object): def __init__(self, expected_type, default, name=None): @@ -62,7 +66,7 @@ class Evaluated(object): def __set__(self, instance, value): attribs = instance.__dict__ value = value or self.default - if isinstance(value, str) and value.startswith('${') and value.endswith('}'): + if isinstance(value, six.text_type) and value.startswith('${') and value.endswith('}'): attribs[self.name_raw] = value[2:-1].strip() else: attribs[self.name] = type(self.default)(value) @@ -75,9 +79,10 @@ class Evaluated(object): class EvaluatedEnum(Evaluated): def __init__(self, allowed_values, default=None, name=None): - self.allowed_values = allowed_values if isinstance(allowed_values, (list, tuple)) else \ - allowed_values.split() - default = default if default is not None else self.allowed_values[0] + if isinstance(allowed_values, six.string_types): + allowed_values = set(allowed_values.split()) + self.allowed_values = allowed_values + default = default if default is not None else next(iter(self.allowed_values)) super(EvaluatedEnum, self).__init__(str, default, name) def default_eval_func(self, instance): |