generated from dopt-python/py311
flexible date/datetime inputs: fix validation display bug
This commit is contained in:
+53
-14
@@ -368,9 +368,8 @@ class Page_Consulting_ConsultingSession_State(PageState[Module]):
|
|||||||
nutzer_id: UserId # must be set with the session (always known)
|
nutzer_id: UserId # must be set with the session (always known)
|
||||||
nutzer_name: str # must be set with the session (always known)
|
nutzer_name: str # must be set with the session (always known)
|
||||||
beratung_id: int | None # known and not known entries
|
beratung_id: int | None # known and not known entries
|
||||||
zeitstempel: datetime.datetime = dc.field(
|
zeitstempel: datetime.datetime | None = None
|
||||||
default_factory=lambda: datetime.datetime.now(tz=datetime.UTC)
|
# dc.field(default_factory=lambda: datetime.datetime.now(tz=datetime.UTC))
|
||||||
)
|
|
||||||
ansprechpartner: str | None = None
|
ansprechpartner: str | None = None
|
||||||
kommunikationsweg: str | None = None
|
kommunikationsweg: str | None = None
|
||||||
thema_crm_matrix: str | None = (
|
thema_crm_matrix: str | None = (
|
||||||
@@ -521,6 +520,8 @@ def build_and_add_widget(
|
|||||||
|
|
||||||
if form_field.readonly:
|
if form_field.readonly:
|
||||||
widget.setReadOnly(True)
|
widget.setReadOnly(True)
|
||||||
|
if form_field.required:
|
||||||
|
widget.setRequired(True)
|
||||||
|
|
||||||
case FormFieldType.DATETIME_FLEXIBLE:
|
case FormFieldType.DATETIME_FLEXIBLE:
|
||||||
widget = FlexibleDateTimeInput()
|
widget = FlexibleDateTimeInput()
|
||||||
@@ -534,6 +535,8 @@ def build_and_add_widget(
|
|||||||
|
|
||||||
if form_field.readonly:
|
if form_field.readonly:
|
||||||
widget.setReadOnly(True)
|
widget.setReadOnly(True)
|
||||||
|
if form_field.required:
|
||||||
|
widget.setRequired(True)
|
||||||
|
|
||||||
case FormFieldType.DROPDOWN:
|
case FormFieldType.DROPDOWN:
|
||||||
widget = QComboBox()
|
widget = QComboBox()
|
||||||
@@ -1677,7 +1680,8 @@ class AutoForm(QWidget):
|
|||||||
class FlexibleDateInput(QWidget):
|
class FlexibleDateInput(QWidget):
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
self._read_only = False
|
self._read_only: bool = False
|
||||||
|
self._required: bool = False
|
||||||
|
|
||||||
layout = QHBoxLayout(self)
|
layout = QHBoxLayout(self)
|
||||||
layout.setContentsMargins(0, 0, 0, 0)
|
layout.setContentsMargins(0, 0, 0, 0)
|
||||||
@@ -1740,6 +1744,15 @@ class FlexibleDateInput(QWidget):
|
|||||||
self.calendar.move(pos)
|
self.calendar.move(pos)
|
||||||
self.calendar.show()
|
self.calendar.show()
|
||||||
|
|
||||||
|
def isRequired(self) -> bool:
|
||||||
|
return self._required
|
||||||
|
|
||||||
|
def setRequired(
|
||||||
|
self,
|
||||||
|
required: bool,
|
||||||
|
) -> None:
|
||||||
|
self._required = required
|
||||||
|
|
||||||
def isReadOnly(self) -> bool:
|
def isReadOnly(self) -> bool:
|
||||||
return self._read_only
|
return self._read_only
|
||||||
|
|
||||||
@@ -1770,7 +1783,9 @@ class FlexibleDateInput(QWidget):
|
|||||||
self.line_edit.setInputMask("99.99.9999;_")
|
self.line_edit.setInputMask("99.99.9999;_")
|
||||||
self.line_edit.setPlaceholderText("TT.MM.JJJJ")
|
self.line_edit.setPlaceholderText("TT.MM.JJJJ")
|
||||||
|
|
||||||
def _validate_input(self) -> None:
|
def _validate_input(
|
||||||
|
self,
|
||||||
|
) -> None:
|
||||||
logger_gui.debug("[Widget -- FlexibleDateInput] Trigger input validation")
|
logger_gui.debug("[Widget -- FlexibleDateInput] Trigger input validation")
|
||||||
if self._read_only:
|
if self._read_only:
|
||||||
return
|
return
|
||||||
@@ -1781,7 +1796,8 @@ class FlexibleDateInput(QWidget):
|
|||||||
|
|
||||||
text = self.line_edit.text()
|
text = self.line_edit.text()
|
||||||
# field empty
|
# field empty
|
||||||
if not text.replace(".", "").replace("_", "").strip():
|
pure_text = text.replace(".", "").replace("_", "").strip()
|
||||||
|
if not self._required and not pure_text:
|
||||||
self.line_edit.setStyleSheet("")
|
self.line_edit.setStyleSheet("")
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -1796,7 +1812,9 @@ class FlexibleDateInput(QWidget):
|
|||||||
else:
|
else:
|
||||||
self.line_edit.setStyleSheet("")
|
self.line_edit.setStyleSheet("")
|
||||||
|
|
||||||
def validate(self) -> bool:
|
def validate(
|
||||||
|
self,
|
||||||
|
) -> bool:
|
||||||
logger_custom_fields.debug("[CustomField - FlexDate]: Call validate...")
|
logger_custom_fields.debug("[CustomField - FlexDate]: Call validate...")
|
||||||
self._validate_input()
|
self._validate_input()
|
||||||
date = self.get_date()
|
date = self.get_date()
|
||||||
@@ -1851,7 +1869,8 @@ class FlexibleDateInput(QWidget):
|
|||||||
class FlexibleDateTimeInput(QWidget):
|
class FlexibleDateTimeInput(QWidget):
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
self._read_only = False
|
self._read_only: bool = False
|
||||||
|
self._required: bool = False
|
||||||
|
|
||||||
layout = QHBoxLayout(self)
|
layout = QHBoxLayout(self)
|
||||||
layout.setContentsMargins(0, 0, 0, 0)
|
layout.setContentsMargins(0, 0, 0, 0)
|
||||||
@@ -1915,6 +1934,15 @@ class FlexibleDateTimeInput(QWidget):
|
|||||||
self.calendar.move(pos)
|
self.calendar.move(pos)
|
||||||
self.calendar.show()
|
self.calendar.show()
|
||||||
|
|
||||||
|
def isRequired(self) -> bool:
|
||||||
|
return self._required
|
||||||
|
|
||||||
|
def setRequired(
|
||||||
|
self,
|
||||||
|
required: bool,
|
||||||
|
) -> None:
|
||||||
|
self._required = required
|
||||||
|
|
||||||
def isReadOnly(self) -> bool:
|
def isReadOnly(self) -> bool:
|
||||||
return self._read_only
|
return self._read_only
|
||||||
|
|
||||||
@@ -1945,7 +1973,9 @@ class FlexibleDateTimeInput(QWidget):
|
|||||||
self.line_edit.setInputMask("99.99.9999 99:99;_")
|
self.line_edit.setInputMask("99.99.9999 99:99;_")
|
||||||
self.line_edit.setPlaceholderText("TT.MM.JJJJ hh:mm")
|
self.line_edit.setPlaceholderText("TT.MM.JJJJ hh:mm")
|
||||||
|
|
||||||
def _validate_input(self) -> None:
|
def _validate_input(
|
||||||
|
self,
|
||||||
|
) -> None:
|
||||||
logger_gui.debug("[Widget -- FlexibleDateTimeInput] Trigger input validation")
|
logger_gui.debug("[Widget -- FlexibleDateTimeInput] Trigger input validation")
|
||||||
if self._read_only:
|
if self._read_only:
|
||||||
return
|
return
|
||||||
@@ -1959,7 +1989,7 @@ class FlexibleDateTimeInput(QWidget):
|
|||||||
pure_text = (
|
pure_text = (
|
||||||
text.replace(".", "").replace(":", "").replace(" ", "").replace("_", "").strip()
|
text.replace(".", "").replace(":", "").replace(" ", "").replace("_", "").strip()
|
||||||
)
|
)
|
||||||
if not pure_text:
|
if not self._required and not pure_text:
|
||||||
self.line_edit.setStyleSheet("")
|
self.line_edit.setStyleSheet("")
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -1972,7 +2002,9 @@ class FlexibleDateTimeInput(QWidget):
|
|||||||
else:
|
else:
|
||||||
self.line_edit.setStyleSheet("")
|
self.line_edit.setStyleSheet("")
|
||||||
|
|
||||||
def validate(self) -> bool:
|
def validate(
|
||||||
|
self,
|
||||||
|
) -> bool:
|
||||||
logger_custom_fields.debug("[CustomField - FlexDatetime]: Call validate...")
|
logger_custom_fields.debug("[CustomField - FlexDatetime]: Call validate...")
|
||||||
self._validate_input()
|
self._validate_input()
|
||||||
datetime = self.get_datetime()
|
datetime = self.get_datetime()
|
||||||
@@ -3665,6 +3697,13 @@ class Page_Consulting(QWidget):
|
|||||||
db_index_layout.addWidget(db_index_set_button)
|
db_index_layout.addWidget(db_index_set_button)
|
||||||
container_layout.addLayout(db_index_layout)
|
container_layout.addLayout(db_index_layout)
|
||||||
|
|
||||||
|
test_flex_datetime = FlexibleDateTimeInput()
|
||||||
|
test_flex_datetime.setSizePolicy(
|
||||||
|
QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed
|
||||||
|
)
|
||||||
|
|
||||||
|
container_layout.addWidget(test_flex_datetime)
|
||||||
|
|
||||||
separator2 = QFrame()
|
separator2 = QFrame()
|
||||||
separator2.setFrameShape(QFrame.Shape.HLine)
|
separator2.setFrameShape(QFrame.Shape.HLine)
|
||||||
separator2.setFrameShadow(QFrame.Shadow.Sunken)
|
separator2.setFrameShadow(QFrame.Shadow.Sunken)
|
||||||
@@ -4067,7 +4106,6 @@ class Page_Consulting_ConsultingSession(QWidget):
|
|||||||
layout,
|
layout,
|
||||||
widget_registry=self.widget_registry,
|
widget_registry=self.widget_registry,
|
||||||
)
|
)
|
||||||
self.timestamp.set_pydatetime(datetime.datetime.now())
|
|
||||||
|
|
||||||
contact_def = FormField[QLineEdit](
|
contact_def = FormField[QLineEdit](
|
||||||
"Kontaktperson",
|
"Kontaktperson",
|
||||||
@@ -4175,7 +4213,8 @@ class Page_Consulting_ConsultingSession(QWidget):
|
|||||||
"[Page Consulting -- Consulting Session]: State = %s", self.STATE
|
"[Page Consulting -- Consulting Session]: State = %s", self.STATE
|
||||||
)
|
)
|
||||||
set_widget_value(self.user_field, self.STATE.nutzer_name)
|
set_widget_value(self.user_field, self.STATE.nutzer_name)
|
||||||
set_widget_value(self.timestamp, self.STATE.zeitstempel.astimezone(TIMEZONE_CEST))
|
if self.STATE.zeitstempel is not None:
|
||||||
|
set_widget_value(self.timestamp, self.STATE.zeitstempel.astimezone(TIMEZONE_CEST))
|
||||||
set_widget_value(self.contact, self.STATE.ansprechpartner)
|
set_widget_value(self.contact, self.STATE.ansprechpartner)
|
||||||
set_widget_value(self.contact_type, self.STATE.kommunikationsweg)
|
set_widget_value(self.contact_type, self.STATE.kommunikationsweg)
|
||||||
set_widget_value(self.crm_link, self.STATE.thema_crm_matrix)
|
set_widget_value(self.crm_link, self.STATE.thema_crm_matrix)
|
||||||
@@ -4200,7 +4239,7 @@ class Page_Consulting_ConsultingSession(QWidget):
|
|||||||
def validate(self) -> list[str]:
|
def validate(self) -> list[str]:
|
||||||
logger_page_consulting.debug(
|
logger_page_consulting.debug(
|
||||||
">>>>> Call validate on Session. Widget registry:\n%s",
|
">>>>> Call validate on Session. Widget registry:\n%s",
|
||||||
pprint_registry(self.widget_registry),
|
pformat_registry(self.widget_registry),
|
||||||
)
|
)
|
||||||
return validate_form_data(self.widget_registry)
|
return validate_form_data(self.widget_registry)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user