change company search to dropdown base

This commit is contained in:
2026-05-21 08:52:26 +02:00
parent 7f6a2f75a5
commit 6c3bd72b0c

View File

@@ -617,8 +617,10 @@ def reset_form(
elif isinstance(widget, QComboBox): elif isinstance(widget, QComboBox):
if form_field.fill_value: if form_field.fill_value:
widget.setCurrentText(form_field.fill_value) widget.setCurrentText(form_field.fill_value)
else: elif form_field.type is FormFieldType.DROPDOWN:
widget.setCurrentIndex(0) widget.setCurrentIndex(0)
else:
widget.setCurrentIndex(-1)
elif isinstance(widget, DynamicListWidget): elif isinstance(widget, DynamicListWidget):
# dynamic list widget manages its widgets by itself # dynamic list widget manages its widgets by itself
widget.reset_form() widget.reset_form()
@@ -1328,21 +1330,15 @@ class Grunderfassung_Suche(CustomWidget):
self.COMPANY_SEARCH_INPUT_KEY = "kontaktliste_un_suche" self.COMPANY_SEARCH_INPUT_KEY = "kontaktliste_un_suche"
lookup = search_widgets_by_key(self.widget_registry, self.COMPANY_SEARCH_INPUT_KEY) 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(QComboBox, lookup[0]["widget"])
self.company_search_completer = self.company_search_input.completer() self.company_search_input.currentIndexChanged.connect(self._selected_company)
self.company_search_completer.activated[QModelIndex].connect( # type: ignore
self._selected_company_on_completer
)
self.company_search_input.textChanged.connect(self._search_company_change_manually)
self.PERSON_SEARCH_INPUT_KEY = "kontaktliste_person_suche" self.PERSON_SEARCH_INPUT_KEY = "kontaktliste_person_suche"
lookup = search_widgets_by_key(self.widget_registry, self.PERSON_SEARCH_INPUT_KEY) 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)
self._selected_person_on_completer
)
# self.company_search_completer = self.company_search_input.completer()
self.CHANNEL_AWARENESS_KEY = "kontaktliste_kanal_aufmerksamkeit" self.CHANNEL_AWARENESS_KEY = "kontaktliste_kanal_aufmerksamkeit"
lookup = search_widgets_by_key(self.widget_registry, self.CHANNEL_AWARENESS_KEY) lookup = search_widgets_by_key(self.widget_registry, self.CHANNEL_AWARENESS_KEY)
assert len(lookup) == 1 assert len(lookup) == 1
@@ -1437,23 +1433,17 @@ class Grunderfassung_Suche(CustomWidget):
widget.clear() widget.clear()
def update_company_data(self) -> None: def update_company_data(self) -> None:
# self.reset_form()
self.company_search_input.clear() self.company_search_input.clear()
self._clear_company_fields() self.company_search_input.addItem(DROPDOWN_DEFAULT, None)
search_items = QStandardItemModel()
search_choices = be_init_rec.comp_search_choices() search_choices = be_init_rec.comp_search_choices()
for item, db_index in search_choices: for item, db_index in search_choices:
qitem = QStandardItem(item) self.company_search_input.addItem(item, db_index)
qitem.setData(db_index, Qt.ItemDataRole.UserRole) self.company_search_input.setCurrentIndex(-1)
search_items.appendRow(qitem)
self.company_search_completer.setModel(search_items)
def update_person_data( def update_person_data(
self, self,
ma_id: int | None, ma_id: int | None,
) -> None: ) -> None:
# self.reset_form()
self.person_search_input.clear() self.person_search_input.clear()
self.person_search_input.addItem(DROPDOWN_DEFAULT, None) self.person_search_input.addItem(DROPDOWN_DEFAULT, None)
search_choices = be_init_rec.contact_person_search_choices(ma_id, True) search_choices = be_init_rec.contact_person_search_choices(ma_id, True)
@@ -1461,24 +1451,27 @@ class Grunderfassung_Suche(CustomWidget):
self.person_search_input.addItem(item, db_index) self.person_search_input.addItem(item, db_index)
self.person_search_input.setCurrentIndex(0) self.person_search_input.setCurrentIndex(0)
def _selected_company_on_completer( def _selected_company(
self, self,
index: QModelIndex, index: int,
) -> None: ) -> None:
ma_id = index.data(Qt.ItemDataRole.UserRole) ma_id = self.company_search_input.itemData(index)
if ma_id is None or index == (-1):
self._clear_company_fields()
return
data = be_init_rec.comp_search_get_info( data = be_init_rec.comp_search_get_info(
ma_id=ma_id, ma_id=ma_id,
) )
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.update_person_data(ma_id) self.update_person_data(ma_id)
def _selected_person_on_completer( def _selected_person(
self, self,
index: int, index: int,
) -> None: ) -> None:
an_id = self.person_search_input.itemData(index) an_id = self.person_search_input.itemData(index)
if an_id is None: if an_id is None or index == (-1):
self._clear_person_fields() self._clear_person_fields()
return return
@@ -1487,12 +1480,6 @@ class Grunderfassung_Suche(CustomWidget):
) )
self.fill_out_person(data) self.fill_out_person(data)
def _search_company_change_manually(
self,
_: str,
) -> None:
self.company_search_input.setProperty(self.PROPERTY_MA_ID, -1)
@override @override
def reset_form(self) -> None: def reset_form(self) -> None:
reset_form(self.widget_registry) reset_form(self.widget_registry)
@@ -1513,16 +1500,12 @@ class Grunderfassung_Suche(CustomWidget):
print("raw_data:\n") print("raw_data:\n")
pprint(raw_data) pprint(raw_data)
# leaf dictionary contains data fields # leaf dictionary contains data fields
data = list(get_leaf_dicts(raw_data))[0] data = tuple(get_leaf_dicts(raw_data))[0]
print("leaf dicts:\n") print("leaf dicts:\n")
pprint(data) pprint(data)
ma_id = self.company_search_input.property(self.PROPERTY_MA_ID) self.export_data[self.COMPANY_SEARCH_INPUT_KEY] = data[self.COMPANY_SEARCH_INPUT_KEY]
# # 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.PERSON_SEARCH_INPUT_KEY] = data[self.PERSON_SEARCH_INPUT_KEY]
self.export_data[self.CHANNEL_AWARENESS_KEY] = data[self.CHANNEL_AWARENESS_KEY] self.export_data[self.CHANNEL_AWARENESS_KEY] = data[self.CHANNEL_AWARENESS_KEY]
print("\nExport data:") print("\nExport data:")
@@ -1542,8 +1525,7 @@ class Grunderfassung_Suche(CustomWidget):
comp_info = be_init_rec.comp_search_get_info( comp_info = be_init_rec.comp_search_get_info(
ma_id=ma_id, ma_id=ma_id,
) )
# self.company_search_input.setText(comp_info["ma_unternehmensname"]) set_widget_value(self.company_search_input, ma_id)
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[self.PERSON_SEARCH_INPUT_KEY] an_id = data[self.PERSON_SEARCH_INPUT_KEY]
@@ -1551,10 +1533,6 @@ class Grunderfassung_Suche(CustomWidget):
an_id=an_id, an_id=an_id,
) )
set_widget_value(self.person_search_input, an_id) set_widget_value(self.person_search_input, an_id)
# index = self.person_search_input.findData(an_id)
# if index < 0:
# 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_KEY] value = data[self.CHANNEL_AWARENESS_KEY]
@@ -2477,9 +2455,10 @@ CUSTOM_WIDGETS: Final[dict[str, type[CustomWidget]]] = {
FORM_FIELDS_SEARCH_HEAD = [ FORM_FIELDS_SEARCH_HEAD = [
FormField( FormField(
"Suche", "Suche",
FormFieldType.TEXT_SEARCH, FormFieldType.EXTENDED_DROPDOWN,
required=True, required=True,
key="kontaktliste_un_suche", key="kontaktliste_un_suche",
placeholder="Suche...",
), ),
FormField( FormField(
"Name Unternehmen/Netzwerkpartner", "Name Unternehmen/Netzwerkpartner",
@@ -2527,6 +2506,7 @@ FORM_FIELDS_SEARCH_HEAD = [
required=True, required=True,
key="kontaktliste_person_suche", key="kontaktliste_person_suche",
info="ma_ort", info="ma_ort",
placeholder="Suche...",
), ),
FormField( FormField(
"Titel", "Titel",