From 2894d3a1a9c8da7a213e75c4aadf96bec023218f Mon Sep 17 00:00:00 2001 From: foefl Date: Tue, 28 Jul 2026 09:18:47 +0200 Subject: [PATCH] fulfil customer requirements REQ 1011, test for REQ 1013, 1014 --- src/wce_crm/form_defs.py | 8 ++++---- src/wce_crm/gui.py | 18 +++++++++++++----- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/wce_crm/form_defs.py b/src/wce_crm/form_defs.py index aa476d5..c0da687 100644 --- a/src/wce_crm/form_defs.py +++ b/src/wce_crm/form_defs.py @@ -434,7 +434,7 @@ _INITREC_MASTER_DATA = [ ), FormField( "Geburtsdatum", - FormFieldType.DATE, + FormFieldType.DATE_FLEXIBLE, key="geburtsdatum", required=False, ), @@ -588,7 +588,7 @@ _INITREC_ADDITIONAL_DATA = [ ), FormField( "Gültigkeit Aufenthaltsstatus", - FormFieldType.DATE, + FormFieldType.DATE_FLEXIBLE, required=False, key="WI_gueltigkeit_aufenthaltstitel", ), @@ -858,7 +858,7 @@ _INITREC_LANGUAGES = [ ), FormField( "Datum des Nachweises", - FormFieldType.DATE, + FormFieldType.DATE_FLEXIBLE, required=False, key="SP_datum_nachweis", ), @@ -906,7 +906,7 @@ INITREC_METADATEN = [ ), FormField( "Wiedereintrittsdatum", - FormFieldType.DATE, + FormFieldType.DATE_FLEXIBLE, required=False, key="Metadaten_wiedereintrittsdatum", readonly=False, diff --git a/src/wce_crm/gui.py b/src/wce_crm/gui.py index 75e9bad..b8204a5 100644 --- a/src/wce_crm/gui.py +++ b/src/wce_crm/gui.py @@ -862,13 +862,13 @@ def set_widget_value( raise ValueError(f"Could not parse date field value >{value}<") widget.setDate(set_date) elif isinstance(widget, FlexibleDateInput): - assert isinstance(value, datetime.datetime) + assert isinstance(value, (datetime.datetime, datetime.date)) or value is None try: widget.set_pydate(value, raise_error=True) except ValueError: raise ValueError(f"Could not parse date field value >{value}<") elif isinstance(widget, FlexibleDateTimeInput): - assert isinstance(value, datetime.datetime) + assert isinstance(value, datetime.datetime) or value is None try: widget.set_pydatetime(value, raise_error=True) except ValueError: @@ -2005,9 +2005,13 @@ class FlexibleDateInput(QWidget): def set_pydate( self, - date: datetime.datetime, + date: datetime.datetime | datetime.date | None, raise_error: bool = False, ) -> None: + if date is None: + self.reset() + return + date_to_set = QDate(date.year, date.month, date.day) if raise_error and not date_to_set.isValid(): raise ValueError("Could not parse date object correctly") @@ -2224,9 +2228,13 @@ class FlexibleDateTimeInput(QWidget): def set_pydatetime( self, - dt: datetime.datetime, + dt: datetime.datetime | None, raise_error: bool = False, ) -> None: + if dt is None: + self.reset() + return + dt_to_set = QDateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute, 0) if raise_error and not dt_to_set.isValid(): raise ValueError("Could not parse datetime object correctly") @@ -3277,7 +3285,7 @@ class Page_InitRec(QWidget): print(f">>>> {pformat(search_res)}") assert len(search_res) == 1 field_wiedereintrittsdatum = search_res[0]["widget"] - assert isinstance(field_wiedereintrittsdatum, QDateEdit) + assert isinstance(field_wiedereintrittsdatum, FlexibleDateInput) self.field_wiedereintrittsdatum = field_wiedereintrittsdatum # ** person