From 58b74d1a68576219807e9afefdf8a693c187ac07 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 8 Feb 2021 12:54:22 +0100 Subject: [PATCH] fixed enum item set_value --- pype/settings/entities/input_entities.py | 31 ++++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/pype/settings/entities/input_entities.py b/pype/settings/entities/input_entities.py index f1ea2a8b59..122d582646 100644 --- a/pype/settings/entities/input_entities.py +++ b/pype/settings/entities/input_entities.py @@ -336,21 +336,41 @@ class EnumEntity(InputEntity): if not self.enum_items: raise ValueError("Attribute `enum_items` is not defined.") + valid_keys = set() + for item in self.enum_items: + valid_keys.add(tuple(item.keys())[0]) + + self.valid_keys = valid_keys + if self.multiselection: self.valid_value_types = (list, ) self.value_on_not_set = [] else: valid_value_types = set() - for item in self.enum_items: + for key in valid_keys: if self.value_on_not_set is NOT_SET: - self.value_on_not_set = item - valid_value_types.add(type(item)) + self.value_on_not_set = key + valid_value_types.add(type(key)) self.valid_value_types = tuple(valid_value_types) # GUI attribute self.placeholder = self.schema_data.get("placeholder") + def schema_validations(self): + enum_keys = set() + for item in self.enum_items: + key = tuple(item.keys())[0] + if key in enum_keys: + raise ValueError( + "{}: Key \"{}\" is more than once in enum items.".format( + self.path, key + ) + ) + enum_keys.add(key) + + super(EnumEntity, self).schema_validations() + def set_value(self, value): if self.multiselection: if not isinstance(value, list): @@ -363,13 +383,14 @@ class EnumEntity(InputEntity): check_values = [value] for item in check_values: - if item not in self.enum_items: + if item not in self.valid_keys: raise ValueError( "Invalid value \"{}\". Expected: {}".format( - item, self.enum_items + item, self.valid_keys ) ) self._current_value = value + self.on_value_change() class TextEntity(InputEntity):