Skip to content

Commit 7623655

Browse files
committed
Validate non-None values prior
to casting into int or floats. Also modify the behaviour of bool with a overt Nan option
1 parent 3e9aa88 commit 7623655

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

ulc_mm_package/QtGUI/study_metadata_form.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,11 @@ def create_widget_for_field(field_def):
8787
if idx >= 0:
8888
w.setCurrentIndex(idx)
8989
elif t == "bool":
90-
w = QCheckBox()
91-
default = field_def.get("default")
92-
if default is not None:
93-
w.setChecked(bool(default))
94-
90+
w = QComboBox()
91+
w.addItem("True", True)
92+
w.addItem("False", False)
93+
w.AddItem("None", None)
94+
w.setCurrentIndex(-1)
9595
else:
9696
raise ValueError(f"Unsupported field type: {t}")
9797

@@ -188,17 +188,19 @@ def get_form_input(self):
188188
value = (
189189
widget.toPlainText() if field.get("multiline") else widget.text()
190190
)
191-
if field.get("required") and not value:
192-
errors.append(f"{field.get('label', name)} is required.")
193191
elif t == "int":
194-
value = int(widget.text())
192+
text = widget.text().strip()
193+
value = None if not text else int(widget.text())
195194
elif t == "float":
196-
value = float(widget.text())
195+
text = widget.text().strip()
196+
value = None if not text else float(widget.text())
197197
elif t == "date":
198198
qd = widget.date()
199199
value = qd.toString("yyyy-MM-dd")
200200
elif t == "enum":
201201
value = widget.currentText()
202+
elif t == "bool":
203+
value = widget.currentData()
202204
else:
203205
value = None
204206

0 commit comments

Comments
 (0)