Fix error starting to edit pset without enum reference/enum values #5707

Traceback
Error: Python: Traceback (most recent call last):
  File "\bonsai\bim\module\pset\operator.py", line 62, in execute
    core.enable_pset_editing(tool.Pset, pset, self.pset_name, self.pset_type, self.obj, self.obj_type)
  File "\bonsai\core\pset.py", line 86, in enable_pset_editing
    pset_tool.import_pset_from_existing(pset, props)
  File "\bonsai\tool\pset.py", line 121, in import_pset_from_existing
    metadata.set_value(prop.EnumerationReference.EnumerationValues[0].wrappedValue)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'EnumerationValues'
This commit is contained in:
Andrej730
2024-11-07 16:03:35 +05:00
parent d9186bce11
commit b0cc2e30a9
+17 -4
View File
@@ -118,12 +118,25 @@ class Pset(bonsai.core.tool.Pset):
metadata.name = prop.Name
metadata.is_null = len(simple_prop.enumerated_value.enumerated_values) == 0
metadata.is_optional = True
metadata.set_value(prop.EnumerationReference.EnumerationValues[0].wrappedValue)
enum_reference = prop.EnumerationReference
selected_enum_items = [v.wrappedValue for v in (prop.EnumerationValues or ())]
enum_items = [v.wrappedValue for v in prop.EnumerationReference.EnumerationValues]
selected_enum_items = [v.wrappedValue for v in prop.EnumerationValues]
data_type = metadata.get_value_name(display_only=True)
# If there is no reference, then just use the current values.
if enum_reference is None:
enum_items = selected_enum_items
else:
enum_items = [v.wrappedValue for v in enum_reference.EnumerationValues]
# In theory there could be no reference and no current values,
# nothing to show then, I guess.
if not enum_items:
continue
# Trigger metadata to detect data_type.
metadata.set_value(enum_items[0])
data_type = metadata.get_value_name()
# Fill enum items.
for enum in enum_items:
new = simple_prop.enumerated_value.enumerated_values.add()
setattr(new, data_type, enum)