code cleansing

This commit is contained in:
2026-05-28 10:17:06 +02:00
parent 779508ea81
commit d67082c610

View File

@@ -84,15 +84,6 @@ if not wce_crm.constants.Config.DEVELOPMENT_STATE:
DEBUG_NO_DATABASE = False
DEBUG_GET_SET = False
# TODO remove
# logger_gui = BASE_LOGGER.getChild("wce")
# logger_gui.setLevel(logging.DEBUG)
# logger_search_widget = logger_gui.getChild("search_widget")
# logger_search_widget.setLevel(logging.DEBUG)
# logger_get_data = logger_gui.getChild("get_data")
# logger_get_data.setLevel(logging.DEBUG)
# logger_auto_form = logger_gui.getChild("get_data_auto_form")
# logger_auto_form.setLevel(logging.DEBUG)
QSS = """
*[styleClass="stempel"] {
@@ -880,33 +871,6 @@ def reset_form(
widget.setStyleSheet("")
# TODO: check removal
# def _insert_nested(
# target_dict: dict[str, Any],
# key_path: Sequence[str],
# value: Any,
# ):
# # keys 'a.b.c = 1' --> {'a': {'b': {'c': 1}}}
# for part in key_path[:-1]:
# target_dict = target_dict.setdefault(part, {})
# target_dict[key_path[-1]] = value
# def _get_nested(
# target_dict: dict[str, Any],
# key_path: Sequence[str],
# ) -> Any:
# # keys 'a.b.c = 1' --> {'a': {'b': {'c': 1}}}
# current = target_dict
# for part in key_path:
# if isinstance(current, dict) and part in current:
# current = current[part]
# else:
# return None # path does not exist
# return current
@dc.dataclass(slots=True)
class SubForm:
entry_box: QWidget
@@ -1010,21 +974,20 @@ def get_form_data(
value = qt_date.toPython()
elif isinstance(widget, QComboBox):
value = widget.currentData()
elif isinstance(widget, DynamicListWidget):
# TODO add to other custom widgets
# this should be a list: each dynamic list contains a list
# of such dictionaries
value = widget.get_form_data()
elif isinstance(
widget, (DynamicDropdownWidgetNumeric, DynamicDropdownWidgetOption, CustomWidget)
widget,
(
DynamicListWidget,
DynamicDropdownWidgetNumeric,
DynamicDropdownWidgetOption,
CustomWidget,
),
):
# this is a special data structure with some assumptions of the widget's internals
# DynamicListWidget: this is a list -> each dynamic list contains a list
# of such dictionaries (handled below)
value = widget.get_form_data()
# TODO: check removal
# logger_get_data.info("Key: %s", key)
# logger_get_data.info("Value: %s", value)
if isinstance(value, dict):
raw_data.update(value)
else:
@@ -1099,10 +1062,6 @@ def set_form_data(
if data_key not in filter_keys:
continue
# TODO check removal
# key_path = key.split(COLUMN_SEP)
# value = _get_nested(data, key_path)
# value = data.get(key, None)
if isinstance(
widget,
(
@@ -1231,44 +1190,6 @@ class Grunderfassung_Projektrelevanz(BaseModel):
relevanz: str
foerderperiode: str | None = None
# @field_validator("relevanz", mode="before")
# @classmethod
# def str_to_bool(cls, value: Any) -> Any:
# if isinstance(value, str):
# value = value.strip().lower()
# if value == "ja":
# return True
# elif value == "nein":
# return False
# raise ValueError("Wert muss 'ja', 'nein', True oder False sein.")
# return value
# TODO remove
# class Grunderfassung_ProjektrelevanzStatus_Status(BaseModel):
# model_config = ConfigDict(str_strip_whitespace=True)
# relevanz: bool
# foerderperiode: list[str | None] | None = None
# @field_validator("relevanz", mode="before")
# @classmethod
# def str_to_bool(cls, value: Any) -> Any:
# if isinstance(value, str):
# value = value.strip().lower()
# if value == "ja":
# return True
# elif value == "nein":
# return False
# raise ValueError("Wert muss 'ja', 'nein', True oder False sein.")
# return value
class Grunderfassung_Kontaktperson(BaseModel):
model_config = ConfigDict(str_strip_whitespace=True)
@@ -1835,10 +1756,9 @@ class AutoForm(QWidget):
if lookup_id > 0:
logger_auto_form.debug("Load from DB:")
loaded_data = self.cfg.data_get(lookup_id)
# TODO remove loading from file (obsolete)
else:
logger_auto_form.debug("Load from pickled object:")
loaded_data = load_pydantic_model_dict_db()
logger_auto_form.error("Loading: Lookup ID <= 0. Do nothing!")
return
logger_auto_form.debug(
"Loaded data dict:\n%s Passing to Pydantic...", pformat(loaded_data)
@@ -1905,8 +1825,7 @@ class AutoForm(QWidget):
if DEBUG_NO_DATABASE:
return
# !! this code is only called if the 'try' block was successful
# save_pydantic_model_dict_db(validated_data)
# TODO save data to database
# save data to database
db_data = validated_data.to_db(exclude=self.cfg.ignored_keys)
logger_auto_form.debug(
("Form data with 'exlude' (must be saved in the database):\n%s"),
@@ -2058,24 +1977,9 @@ class DynamicListWidget(QWidget):
return errors
def get_form_data(self) -> list[dict[str, Any]]:
# TODO code cleansing
# raw_data = get_form_data(self.widget_registry)
# form_data = get_form_data(self.widget_registry)
# logger_get_data.debug(
# "\n\n\n------- Form data DynamicListWidget:\n%s", pformat(form_data)
# )
logger_get_data.info("DynamicListWidget - SubForms")
# for sub_form in self.sub_forms:
# logger_get_data.info("SubForm index %d", sub_form.index)
# pprint_registry(sub_form.registry)
logger_get_data.info("DynamicListWidget - Get Data")
form_data = [get_form_data(sub.registry) for sub in self.sub_forms]
# ignored_keys: list[str] = []
# for d in form_data:
# ignored_keys.extend(d.ignored_keys)
# data = [d.data for d in form_data]
logger_get_data.debug("##################")
logger_get_data.debug("Form data:\n%s", pformat(form_data))
logger_get_data.debug("DynamicListWidget - Form data:\n%s", pformat(form_data))
return form_data
@@ -2092,19 +1996,6 @@ class DynamicListWidget(QWidget):
self.add_entry()
return
# TODO check removal
# for sub_data in data:
# self.add_entry()
# current_sub_form = self.sub_forms[-1]
# registry_entries = search_widgets_by_key(
# self.widget_registry, f"-[{current_sub_form.index}]"
# )
# for reg_entry in registry_entries:
# widget = reg_entry["widget"]
# field_def = reg_entry["form_field"]
# value = sub_data[field_def.key]
# set_widget_value(widget, value)
for sub_form_data in data:
self.add_entry()
current_sub_form = self.sub_forms[-1]
@@ -2460,23 +2351,22 @@ class DynamicDropdownWidgetOption(QWidget):
widget = self.widget_registry[key]["widget"]
value = data[key]
set_widget_value(widget, value)
# TODO need to get the correct index
logger_get_data.debug("Value: %s", value)
if value is None or value != self.trigger_value:
num_subforms = 0
else:
num_subforms = 1
del data[key]
# assert key in whole_registry, "key not in Dynamic DD Option"
whole_registry = self._get_combined_registry(sub_forms_only=True)
logger_get_data.debug("[DynamicDD-Option] Whole widget registry:\n")
pprint_registry(whole_registry)
logger_get_data.debug("[DynamicDD-Option] Widget registry for subforms obtained")
logger_get_data.debug(">>>>>>>>> Call set_form_data for DynamicDropdown")
logger_get_data.debug("Data before set of subforms:%s", pformat(data))
logger_get_data.debug(
"[DynamicDD-Option] -- set_form_data -- Data before set of subforms:\n%s",
pformat(data),
)
assert len(self.sub_forms) == num_subforms, f"{len(self.sub_forms)=}"
assert len(self.sub_forms) == num_subforms
if not self.sub_forms:
return
@@ -3465,21 +3355,18 @@ class PageFormCompany(QWidget):
header_layout.addWidget(title)
vert_layout.addWidget(header_container)
# --- HAUPTINHALT ---
# --- MAIN CONTENT ---
container = QWidget()
# SCROLL-BEREICH
# SCROLL AREA
scroll_area = QScrollArea()
scroll_area.setWidgetResizable(
True
) # WICHTIG: Erlaubt dem Grid im Inneren, sich an die Breite anzupassen
scroll_area.setWidgetResizable(True)
scroll_area.setMinimumWidth(700)
scroll_area.setMaximumWidth(1000)
scroll_area.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
# Optional: Rahmen der ScrollArea entfernen, damit es "flacher" und moderner aussieht
# optional: remove frame to look more modern
scroll_area.setFrameShape(QFrame.Shape.NoFrame)
scroll_area.setWidget(container)
# vert_layout.addSpacing(20)
vert_layout.addWidget(scroll_area)
container_layout = QVBoxLayout(container)
@@ -3487,13 +3374,11 @@ class PageFormCompany(QWidget):
# --- AUTO FORM LAYOUT ---
container_layout.addSpacing(20)
# title = QLabel("--- Automatische Form ---")
# title.setStyleSheet("font-size: 14px; font-style: italic;") # font-weight: bold;
self.auto_form = AutoForm(cfg=CONFIG_GRUNDERFASSUNG_UNTERNEHMEN)
container_layout.addWidget(self.auto_form)
self.auto_form.save_clicked_form.connect(lambda: self.save_clicked_form.emit())
container_layout.addSpacing(30)
container_layout.addSpacing(15)
# --- CUSTOM LOGIC ---
# 'Bundesland' only if 'Inland' selected in 'Stammdaten'
@@ -3554,7 +3439,6 @@ def clear_layout(
clear_layout(child.layout())
# 2. Das Hauptfenster mit dem Grid-Layout
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
@@ -3668,7 +3552,6 @@ class MainWindow(QMainWindow):
for col_idx, title in enumerate(headers):
self.header_grid.addWidget(HeaderCell(title), self.current_row, col_idx)
# self.current_row += 1
self.update_grid()
return main_widget