more generic approach in company search

This commit is contained in:
2026-05-21 08:28:17 +02:00
parent 97b75f4eeb
commit 7f6a2f75a5

View File

@@ -1325,7 +1325,8 @@ class Grunderfassung_Suche(CustomWidget):
self.prefix, self.prefix,
) )
lookup = search_widgets_by_key(self.widget_registry, "kontaktliste_un_suche") self.COMPANY_SEARCH_INPUT_KEY = "kontaktliste_un_suche"
lookup = search_widgets_by_key(self.widget_registry, self.COMPANY_SEARCH_INPUT_KEY)
assert len(lookup) == 1 assert len(lookup) == 1
self.company_search_input = cast(QLineEdit, lookup[0]["widget"]) self.company_search_input = cast(QLineEdit, lookup[0]["widget"])
self.company_search_completer = self.company_search_input.completer() self.company_search_completer = self.company_search_input.completer()
@@ -1334,16 +1335,16 @@ class Grunderfassung_Suche(CustomWidget):
) )
self.company_search_input.textChanged.connect(self._search_company_change_manually) self.company_search_input.textChanged.connect(self._search_company_change_manually)
lookup = search_widgets_by_key(self.widget_registry, "kontaktliste_person_suche") self.PERSON_SEARCH_INPUT_KEY = "kontaktliste_person_suche"
lookup = search_widgets_by_key(self.widget_registry, self.PERSON_SEARCH_INPUT_KEY)
assert len(lookup) == 1 assert len(lookup) == 1
self.person_search_input = cast(QComboBox, lookup[0]["widget"]) self.person_search_input = cast(QComboBox, lookup[0]["widget"])
self.person_search_input.currentIndexChanged.connect( self.person_search_input.currentIndexChanged.connect(
self._selected_person_on_completer self._selected_person_on_completer
) )
# self.company_search_completer = self.company_search_input.completer() # self.company_search_completer = self.company_search_input.completer()
lookup = search_widgets_by_key( self.CHANNEL_AWARENESS_KEY = "kontaktliste_kanal_aufmerksamkeit"
self.widget_registry, "kontaktliste_kanal_aufmerksamkeit" lookup = search_widgets_by_key(self.widget_registry, self.CHANNEL_AWARENESS_KEY)
)
assert len(lookup) == 1 assert len(lookup) == 1
self.channel_awareness = lookup[0] self.channel_awareness = lookup[0]
@@ -1388,6 +1389,9 @@ class Grunderfassung_Suche(CustomWidget):
button = QPushButton("Set form data") button = QPushButton("Set form data")
button.clicked.connect(self.set_form_data) button.clicked.connect(self.set_form_data)
main_layout.addWidget(button) main_layout.addWidget(button)
button = QPushButton("Validate")
button.clicked.connect(self.validate_form_data)
main_layout.addWidget(button)
self.update_company_data() self.update_company_data()
@@ -1467,7 +1471,6 @@ class Grunderfassung_Suche(CustomWidget):
) )
self.company_search_input.setProperty(self.PROPERTY_MA_ID, ma_id) self.company_search_input.setProperty(self.PROPERTY_MA_ID, ma_id)
self.fill_out_company(data) self.fill_out_company(data)
# self.company_selected.emit(ma_id)
self.update_person_data(ma_id) self.update_person_data(ma_id)
def _selected_person_on_completer( def _selected_person_on_completer(
@@ -1498,22 +1501,29 @@ class Grunderfassung_Suche(CustomWidget):
@override @override
def validate_form_data(self) -> list[str]: def validate_form_data(self) -> list[str]:
return validate_form_data(self.widget_registry) errors = validate_form_data(self.widget_registry)
print("\n>>>> Validation:")
pprint(errors)
return errors
@override @override
def get_form_data(self) -> dict[str, Any]: def get_form_data(self) -> dict[str, Any]:
# TODO decide if value is checked here or later in the Pydantic validation # TODO decide if value is checked here or later in the Pydantic validation
raw_data = get_form_data(self.widget_registry) raw_data = get_form_data(self.widget_registry)
ma_id = self.company_search_input.property(self.PROPERTY_MA_ID)
# index = self.person_search_input.currentIndex()
an_id = self.person_search_input.currentData()
self.export_data["ma_id"] = ma_id
self.export_data["an_id"] = an_id
widget = cast(QComboBox, self.channel_awareness["widget"])
self.export_data[self.channel_awareness["form_field"].key] = widget.currentData()
print("raw_data:\n") print("raw_data:\n")
pprint(raw_data) pprint(raw_data)
# leaf dictionary contains data fields
data = list(get_leaf_dicts(raw_data))[0]
print("leaf dicts:\n")
pprint(data)
ma_id = self.company_search_input.property(self.PROPERTY_MA_ID)
# # index = self.person_search_input.currentIndex()
# an_id = self.person_search_input.currentData()
self.export_data[self.COMPANY_SEARCH_INPUT_KEY] = ma_id
self.export_data[self.PERSON_SEARCH_INPUT_KEY] = data[self.PERSON_SEARCH_INPUT_KEY]
self.export_data[self.CHANNEL_AWARENESS_KEY] = data[self.CHANNEL_AWARENESS_KEY]
print("\nExport data:") print("\nExport data:")
pprint(self.export_data) pprint(self.export_data)
@@ -1528,24 +1538,26 @@ class Grunderfassung_Suche(CustomWidget):
if not self.export_data: if not self.export_data:
raise RuntimeError() raise RuntimeError()
data = self.export_data data = self.export_data
ma_id = data["ma_id"] ma_id = data[self.COMPANY_SEARCH_INPUT_KEY]
comp_info = be_init_rec.comp_search_get_info( comp_info = be_init_rec.comp_search_get_info(
ma_id=data["ma_id"], ma_id=ma_id,
) )
self.company_search_input.setText(comp_info["ma_unternehmensname"]) # self.company_search_input.setText(comp_info["ma_unternehmensname"])
set_widget_value(self.person_search_input, comp_info["ma_unternehmensname"])
self.fill_out_company(comp_info) self.fill_out_company(comp_info)
self.update_person_data(ma_id) self.update_person_data(ma_id)
an_id = data["an_id"] an_id = data[self.PERSON_SEARCH_INPUT_KEY]
pers_info = be_init_rec.contact_person_search_get_info( pers_info = be_init_rec.contact_person_search_get_info(
an_id=an_id, an_id=an_id,
) )
index = self.person_search_input.findData(an_id) set_widget_value(self.person_search_input, an_id)
if index < 0: # index = self.person_search_input.findData(an_id)
raise IndexError("Data for person search was not found") # if index < 0:
self.person_search_input.setCurrentIndex(index) # raise IndexError("Data for person search was not found")
# self.person_search_input.setCurrentIndex(index)
self.fill_out_person(pers_info) self.fill_out_person(pers_info)
widget = cast(QComboBox, self.channel_awareness["widget"]) widget = cast(QComboBox, self.channel_awareness["widget"])
value = data[self.channel_awareness["form_field"].key] value = data[self.CHANNEL_AWARENESS_KEY]
set_widget_value(widget, value) set_widget_value(widget, value)
@@ -2466,7 +2478,7 @@ FORM_FIELDS_SEARCH_HEAD = [
FormField( FormField(
"Suche", "Suche",
FormFieldType.TEXT_SEARCH, FormFieldType.TEXT_SEARCH,
required=False, required=True,
key="kontaktliste_un_suche", key="kontaktliste_un_suche",
), ),
FormField( FormField(
@@ -2512,7 +2524,7 @@ FORM_FIELDS_SEARCH_HEAD = [
FormField( FormField(
"Suche Ansprechpartner", "Suche Ansprechpartner",
FormFieldType.EXTENDED_DROPDOWN, FormFieldType.EXTENDED_DROPDOWN,
required=False, required=True,
key="kontaktliste_person_suche", key="kontaktliste_person_suche",
info="ma_ort", info="ma_ort",
), ),
@@ -3298,8 +3310,8 @@ class SearchFormPage(QWidget):
# --- SUCHE MIT NAMEN --- # --- SUCHE MIT NAMEN ---
# self.company_search = Grunderfassung_Suche() # self.company_search = Grunderfassung_Suche()
self.company_search = Grunderfassung_Suche(FORM_FIELDS_SEARCH_HEAD) # self.company_search = Grunderfassung_Suche(FORM_FIELDS_SEARCH_HEAD)
container_layout.addWidget(self.company_search) # container_layout.addWidget(self.company_search)
# self.contact_person_search = ContactPersonForm_Search() # self.contact_person_search = ContactPersonForm_Search()
# container_layout.addWidget(self.contact_person_search) # container_layout.addWidget(self.contact_person_search)
# hor_layout = QHBoxLayout() # hor_layout = QHBoxLayout()
@@ -3334,7 +3346,7 @@ class SearchFormPage(QWidget):
# ) # )
# self.company_search.company_selected.connect(self.update_contact_persons) # self.company_search.company_selected.connect(self.update_contact_persons)
container_layout.addSpacing(10) # container_layout.addSpacing(10)
# --- Test Formularlayout --- # --- Test Formularlayout ---
container_layout.addSpacing(30) container_layout.addSpacing(30)