Dev #7

Merged
foefl merged 74 commits from dev into main 2026-07-31 14:19:01 +00:00
Showing only changes of commit f84cbb21c0 - Show all commits
+52 -13
View File
@@ -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,6 +4213,7 @@ class Page_Consulting_ConsultingSession(QWidget):
"[Page Consulting -- Consulting Session]: State = %s", self.STATE
)
set_widget_value(self.user_field, self.STATE.nutzer_name)
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)
@@ -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)