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_name: str # must be set with the session (always known)
|
||||
beratung_id: int | None # known and not known entries
|
||||
zeitstempel: datetime.datetime = dc.field(
|
||||
default_factory=lambda: datetime.datetime.now(tz=datetime.UTC)
|
||||
)
|
||||
zeitstempel: datetime.datetime | None = None
|
||||
# dc.field(default_factory=lambda: datetime.datetime.now(tz=datetime.UTC))
|
||||
ansprechpartner: str | None = None
|
||||
kommunikationsweg: str | None = None
|
||||
thema_crm_matrix: str | None = (
|
||||
@@ -521,6 +520,8 @@ def build_and_add_widget(
|
||||
|
||||
if form_field.readonly:
|
||||
widget.setReadOnly(True)
|
||||
if form_field.required:
|
||||
widget.setRequired(True)
|
||||
|
||||
case FormFieldType.DATETIME_FLEXIBLE:
|
||||
widget = FlexibleDateTimeInput()
|
||||
@@ -534,6 +535,8 @@ def build_and_add_widget(
|
||||
|
||||
if form_field.readonly:
|
||||
widget.setReadOnly(True)
|
||||
if form_field.required:
|
||||
widget.setRequired(True)
|
||||
|
||||
case FormFieldType.DROPDOWN:
|
||||
widget = QComboBox()
|
||||
@@ -1677,7 +1680,8 @@ class AutoForm(QWidget):
|
||||
class FlexibleDateInput(QWidget):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
self._read_only = False
|
||||
self._read_only: bool = False
|
||||
self._required: bool = False
|
||||
|
||||
layout = QHBoxLayout(self)
|
||||
layout.setContentsMargins(0, 0, 0, 0)
|
||||
@@ -1740,6 +1744,15 @@ class FlexibleDateInput(QWidget):
|
||||
self.calendar.move(pos)
|
||||
self.calendar.show()
|
||||
|
||||
def isRequired(self) -> bool:
|
||||
return self._required
|
||||
|
||||
def setRequired(
|
||||
self,
|
||||
required: bool,
|
||||
) -> None:
|
||||
self._required = required
|
||||
|
||||
def isReadOnly(self) -> bool:
|
||||
return self._read_only
|
||||
|
||||
@@ -1770,7 +1783,9 @@ class FlexibleDateInput(QWidget):
|
||||
self.line_edit.setInputMask("99.99.9999;_")
|
||||
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")
|
||||
if self._read_only:
|
||||
return
|
||||
@@ -1781,7 +1796,8 @@ class FlexibleDateInput(QWidget):
|
||||
|
||||
text = self.line_edit.text()
|
||||
# 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("")
|
||||
return
|
||||
|
||||
@@ -1796,7 +1812,9 @@ class FlexibleDateInput(QWidget):
|
||||
else:
|
||||
self.line_edit.setStyleSheet("")
|
||||
|
||||
def validate(self) -> bool:
|
||||
def validate(
|
||||
self,
|
||||
) -> bool:
|
||||
logger_custom_fields.debug("[CustomField - FlexDate]: Call validate...")
|
||||
self._validate_input()
|
||||
date = self.get_date()
|
||||
@@ -1851,7 +1869,8 @@ class FlexibleDateInput(QWidget):
|
||||
class FlexibleDateTimeInput(QWidget):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
self._read_only = False
|
||||
self._read_only: bool = False
|
||||
self._required: bool = False
|
||||
|
||||
layout = QHBoxLayout(self)
|
||||
layout.setContentsMargins(0, 0, 0, 0)
|
||||
@@ -1915,6 +1934,15 @@ class FlexibleDateTimeInput(QWidget):
|
||||
self.calendar.move(pos)
|
||||
self.calendar.show()
|
||||
|
||||
def isRequired(self) -> bool:
|
||||
return self._required
|
||||
|
||||
def setRequired(
|
||||
self,
|
||||
required: bool,
|
||||
) -> None:
|
||||
self._required = required
|
||||
|
||||
def isReadOnly(self) -> bool:
|
||||
return self._read_only
|
||||
|
||||
@@ -1945,7 +1973,9 @@ class FlexibleDateTimeInput(QWidget):
|
||||
self.line_edit.setInputMask("99.99.9999 99:99;_")
|
||||
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")
|
||||
if self._read_only:
|
||||
return
|
||||
@@ -1959,7 +1989,7 @@ class FlexibleDateTimeInput(QWidget):
|
||||
pure_text = (
|
||||
text.replace(".", "").replace(":", "").replace(" ", "").replace("_", "").strip()
|
||||
)
|
||||
if not pure_text:
|
||||
if not self._required and not pure_text:
|
||||
self.line_edit.setStyleSheet("")
|
||||
return
|
||||
|
||||
@@ -1972,7 +2002,9 @@ class FlexibleDateTimeInput(QWidget):
|
||||
else:
|
||||
self.line_edit.setStyleSheet("")
|
||||
|
||||
def validate(self) -> bool:
|
||||
def validate(
|
||||
self,
|
||||
) -> bool:
|
||||
logger_custom_fields.debug("[CustomField - FlexDatetime]: Call validate...")
|
||||
self._validate_input()
|
||||
datetime = self.get_datetime()
|
||||
@@ -3665,6 +3697,13 @@ class Page_Consulting(QWidget):
|
||||
db_index_layout.addWidget(db_index_set_button)
|
||||
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.setFrameShape(QFrame.Shape.HLine)
|
||||
separator2.setFrameShadow(QFrame.Shadow.Sunken)
|
||||
@@ -4067,7 +4106,6 @@ class Page_Consulting_ConsultingSession(QWidget):
|
||||
layout,
|
||||
widget_registry=self.widget_registry,
|
||||
)
|
||||
self.timestamp.set_pydatetime(datetime.datetime.now())
|
||||
|
||||
contact_def = FormField[QLineEdit](
|
||||
"Kontaktperson",
|
||||
@@ -4175,7 +4213,8 @@ class Page_Consulting_ConsultingSession(QWidget):
|
||||
"[Page Consulting -- Consulting Session]: State = %s", self.STATE
|
||||
)
|
||||
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_type, self.STATE.kommunikationsweg)
|
||||
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]:
|
||||
logger_page_consulting.debug(
|
||||
">>>>> 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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user