fixed enum item set_value

This commit is contained in:
iLLiCiTiT 2021-02-08 12:54:22 +01:00
parent 554fab18c8
commit 58b74d1a68

View file

@ -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):