Skip to content

Commit e6f1b4f

Browse files
committed
Add check for required fields
1 parent e210d10 commit e6f1b4f

1 file changed

Lines changed: 31 additions & 7 deletions

File tree

src/form_page.py

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ def _create_field(self, label_text: str, field: dict):
7777

7878
row = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
7979

80+
if field.get("required", False):
81+
label_text = label_text + " *"
82+
8083
label = Gtk.Label(
8184
label=label_text,
8285
halign=Gtk.Align.START,
@@ -170,6 +173,8 @@ def _create_field(self, label_text: str, field: dict):
170173
@Gtk.Template.Callback()
171174
def on_submit_clicked(self, *_):
172175
data = self._collect_data()
176+
if not data:
177+
return
173178
self._append_to_csv(data)
174179
self._reset_form()
175180

@@ -182,27 +187,46 @@ def _collect_data(self) -> dict:
182187

183188
for field_id, field_dict in self.fields.items():
184189
widget = field_dict["widget"]
190+
field_value = None
185191
if isinstance(widget, Gtk.Entry):
186-
data[field_id] = widget.get_text()
192+
field_value = widget.get_text()
187193
elif isinstance(widget, Gtk.TextView):
188194
text_buffer = widget.get_buffer()
189195
start_iter = text_buffer.get_start_iter()
190196
end_iter = text_buffer.get_end_iter()
191-
data[field_id] = text_buffer.get_text(start_iter, end_iter, True)
197+
field_value = text_buffer.get_text(start_iter, end_iter, True)
192198
elif isinstance(widget, list):
193199
for indv_widget in widget:
194200
active = indv_widget.get_active()
195201
if active:
196-
data[field_id] = indv_widget.get_label()
202+
field_value = indv_widget.get_label()
197203
elif isinstance(widget, Gtk.CheckButton):
198204
active = widget.get_active()
199-
data[field_id] = True if active else False
205+
field_value = True if active else False
200206
elif isinstance(widget, Gtk.Calendar):
201207
date = widget.get_date().format_iso8601()
202-
data[field_id] = date
203-
208+
field_value = date
204209
elif isinstance(widget, Gtk.SpinButton):
205-
data[field_id] = widget.get_value_as_int()
210+
field_value = widget.get_value_as_int()
211+
field_dict_config = field_dict.get("config", None)
212+
if not field_dict_config:
213+
show_fatal_toast(self.form_toast_overlay)
214+
if field_dict_config.get("required", False):
215+
show_toast = False
216+
if field_value is None:
217+
show_toast = True
218+
if isinstance(field_value, str) and field_value == "":
219+
show_toast = True
220+
if isinstance(field_value, bool) and not field_value:
221+
show_toast = True
222+
if show_toast:
223+
toast = Adw.Toast.new(
224+
f"Please fill the required field: {field_dict_config.get('label', 'All')}"
225+
)
226+
toast.set_timeout(2)
227+
self.form_toast_overlay.add_toast(toast)
228+
return None
229+
data[field_id] = field_value
206230

207231
return data
208232

0 commit comments

Comments
 (0)