From 773d398f8c5714665c6fdbb190f374064174d6673e2f2dd87e03e9c062102a06 Mon Sep 17 00:00:00 2001 From: linuxero Date: Wed, 12 Mar 2025 15:43:13 +0100 Subject: [PATCH 1/2] Fix adding a contact person to an object and db autocommit --- Gui/AddObject.qml | 74 ++++++++++++++++++-------------- Gui/CustomersTable.qml | 4 ++ Gui/EmployeesTable.qml | 7 ++- Gui/ObjectAddOnContactPerson.qml | 7 --- Gui/ObjectsTable.qml | 6 ++- lib/DB/ContactDAO.py | 7 ++- lib/DB/DbManager.py | 2 +- lib/DB/ObjectDAO.py | 2 +- lib/DB/ObjectModel.py | 3 +- 9 files changed, 64 insertions(+), 48 deletions(-) diff --git a/Gui/AddObject.qml b/Gui/AddObject.qml index d2a83e4..b95d244 100644 --- a/Gui/AddObject.qml +++ b/Gui/AddObject.qml @@ -8,7 +8,7 @@ import "../js/qmldict.js" as JsLib ColumnLayout { property var new_object: null - property alias checkAddContact: checkAddContact + //property alias checkAddContact: checkAddContact Layout.fillWidth: true Layout.fillHeight: true spacing: 15 @@ -21,7 +21,7 @@ ColumnLayout } CheckBox { - id: checkAddContact + id: checkAddObjectContact text: qsTr("Ansprechpartner hinzufügen") Layout.alignment: Qt.AlignRight checked: false @@ -52,7 +52,7 @@ ColumnLayout ObjectAddOns { id: addObjectLayout - visible: checkAddContact.checked + visible: checkAddObjectContact.checked } } RowLayout @@ -87,48 +87,56 @@ ColumnLayout Component.onCompleted: { - object_model.objectAdded.connect(onObjectAdded) - contact_model.objectContactAdded.connect(onObjectContact) + //object_model.objectAdded.connect(onObjectAdded) + //contact_model.objectContactAdded.connect(onObjectContact) } - // Connections - // { - // target: spacer3 - // function onObjectIdReady() - // { - // var obj_id = arguments[0] - // object_model.addObject(new_object, obj_id) - // appLoader.source = "ObjectTable.qml" - // } - // } - - function onObjectAdded(added, oid) + Connections { - if (!added) - console.log(qsTr("Fehler beim Objekt-Anlegen!")) - if (checkAddContact.checked && oid) - { - var new_objecto = addObjectLayout.getForm() - contact_model.addObjectContact(new_objecto, oid) - } - else appLoader.source = "ObjectTable.qml" - } + target: object_model - function onObjectContact(added) - { - if (!added) - console.log(qsTr("Fehler beim Objekt-Kontakt-Anlegen!")) - else + function onObjectIdReady() { - //object_model.viewCriterion("Alle") + var obj_id = arguments[0] + if (checkAddObjectContact.checked && obj_id) + { + var new_objecto = addObjectLayout.getForm() + contact_model.addObjectContact(new_objecto, obj_id) + object_model.viewCriterion("Alle") + } + appLoader.source = "ObjectTable.qml" } } + // function onObjectAdded(added, oid) + // { + // if (!added) + // console.log(qsTr("Fehler beim Objekt-Anlegen!")) + // if (checkAddObjectContact.checked && oid) + // { + // var new_objecto = addObjectLayout.getForm() + + // contact_model.addObjectContact(new_objecto, oid) + // } + // else appLoader.source = "ObjectTable.qml" + // } + + // function onObjectContact(added) + // { + // if (!added) + // console.log(qsTr("Fehler beim Objekt-Kontakt-Anlegen!")) + // else + // { + // //object_model.viewCriterion("Alle") + // appLoader.source = "ObjectTable.qml" + // } + // } + function checkFields() { - if(checkAddContact.checked) + if(checkAddObjectContact.checked) { if(!newObject.checkObjectField() || !addObjectLayout.contactPerson.contacts || !addObjectLayout.contactPerson.contacts.length) saveBtn.enabled = false diff --git a/Gui/CustomersTable.qml b/Gui/CustomersTable.qml index af7d8fc..c258084 100644 --- a/Gui/CustomersTable.qml +++ b/Gui/CustomersTable.qml @@ -25,6 +25,7 @@ Item ColumnLayout { id: tableColumn + clip: true anchors { top: searchBar.bottom @@ -35,6 +36,7 @@ Item RowLayout { + id: sortView RadioButton { id: showAll @@ -99,7 +101,9 @@ Item { property real newWidth: 0 id: customerTable + z: 1 Layout.fillHeight: true + //height: tableColumn.height - (sortView.height + horizontalHeader.height) Layout.fillWidth: true columnSpacing: 1 rowSpacing: 2 diff --git a/Gui/EmployeesTable.qml b/Gui/EmployeesTable.qml index 04b6182..2a7a4f2 100644 --- a/Gui/EmployeesTable.qml +++ b/Gui/EmployeesTable.qml @@ -35,6 +35,8 @@ Item ColumnLayout { + id: tableParent + clip: true anchors { @@ -46,7 +48,7 @@ Item RowLayout { - //id: criterion + id: viewCriterion RadioButton { @@ -140,7 +142,8 @@ Item TableView { id: appliEmpTable - Layout.fillHeight: true + //Layout.fillHeight: true + height: tableParent.height - (viewCriterion.height + employeeTableHeader.height) Layout.fillWidth: true columnSpacing: 1 rowSpacing: 2 diff --git a/Gui/ObjectAddOnContactPerson.qml b/Gui/ObjectAddOnContactPerson.qml index ab5ff82..bd3e6e1 100644 --- a/Gui/ObjectAddOnContactPerson.qml +++ b/Gui/ObjectAddOnContactPerson.qml @@ -334,13 +334,6 @@ GridLayout color: "white" } - Text - { - text: '' + qsTr('Typ: ') + '' + model.cdata - horizontalAlignment: Text.AlignLeft - color: "white" - } - } // Column } // delegate } // Listview diff --git a/Gui/ObjectsTable.qml b/Gui/ObjectsTable.qml index 8c3e91d..71196e4 100644 --- a/Gui/ObjectsTable.qml +++ b/Gui/ObjectsTable.qml @@ -26,14 +26,15 @@ Item ColumnLayout { id: tableColumn + clip: true anchors { top: searchBar.bottom bottom: parent.bottom left: parent.left right: parent.right + topMargin: 15 } - HorizontalHeaderView { id: horizontalHeaderview @@ -66,7 +67,8 @@ Item { property real newWidth: 0 id: objectTable - Layout.fillHeight: true + z: 0 + height: tableColumn.height - horizontalHeaderview.height Layout.fillWidth: true columnSpacing: 1 rowSpacing: 2 diff --git a/lib/DB/ContactDAO.py b/lib/DB/ContactDAO.py index 5b61946..47ce47c 100644 --- a/lib/DB/ContactDAO.py +++ b/lib/DB/ContactDAO.py @@ -22,8 +22,13 @@ class ContactDAO(QObject): if self.__cur: self.__cur.callproc("addContactPerson", (enc_key, json.dumps(contact),)) self.__con.commit() + self.__cur.callproc("getLastInsertId") + contact_id = self.__cur.fetchone() self.__cur.callproc("logger",(contact_id[0], "INSERT", "addContactPerson: New Contact added",)) self.__con.commit() + return contact_id[0] + else: + return None except mariadb.Error as e: print("MDB: " + str(e)) except Exception as e: @@ -36,7 +41,7 @@ class ContactDAO(QObject): self.__con.commit() self.__cur.callproc("logObjectContact") self.__con.commit() - self.newObjectContactAdded.emit(True) + # self.newObjectContactAdded.emit(True) except mariadb.Error as e: print("MDB (addObjectContact): " + str(e)) self.newObjectContactAdded.emit(False) diff --git a/lib/DB/DbManager.py b/lib/DB/DbManager.py index 51bd1ed..c46c6c5 100644 --- a/lib/DB/DbManager.py +++ b/lib/DB/DbManager.py @@ -37,7 +37,7 @@ class DbManager(): def __initializeConfig(cls, dbconf): cls.__con_param = { 'user': dbconf['DB_USER'], 'password': dbconf['DB_PASS'], 'port': int (dbconf['DB_PORT']), 'host': dbconf['DB_HOST'], - 'database': dbconf['DB_NAME'], 'connect_timeout': 5 + 'database': dbconf['DB_NAME'], 'connect_timeout': 5, 'autocommit': True, } diff --git a/lib/DB/ObjectDAO.py b/lib/DB/ObjectDAO.py index 137a14b..4680ea0 100644 --- a/lib/DB/ObjectDAO.py +++ b/lib/DB/ObjectDAO.py @@ -27,7 +27,7 @@ class ObjectDAO(QObject): else: return None except mariadb.Error as e: - self.newObjectAdded.emit(False) + self.newObjectAdded.emit(False, None) print(str(e)) def getObjects(self, criterion, enc_key = None): diff --git a/lib/DB/ObjectModel.py b/lib/DB/ObjectModel.py index 5cbcf77..8890539 100644 --- a/lib/DB/ObjectModel.py +++ b/lib/DB/ObjectModel.py @@ -7,6 +7,7 @@ import json class ObjectModel(QAbstractTableModel): objectAdded = Signal(bool, int) + objectIdReady = Signal(int) __data = None __object_dao = None @@ -32,6 +33,7 @@ class ObjectModel(QAbstractTableModel): #print(new_object) o = self.__object_dao.addObject(new_object) + self.objectIdReady.emit(o) # @Slot(str) # def viewCriterion(self, criterion, processed = False, fired = False): @@ -55,7 +57,6 @@ class ObjectModel(QAbstractTableModel): @Slot(str) def viewCriterion(self, criterion): - print(f"Criterion: {criterion}") self.__getData(criterion) def data(self, index, role= Qt.DisplayRole): From 7b0ec6ed993352d9ee420260d75b707583ba8085718b767b8ac298ed90317f96 Mon Sep 17 00:00:00 2001 From: linuxero Date: Fri, 14 Mar 2025 09:34:52 +0100 Subject: [PATCH 2/2] Remove faulty definition of viewCriterion in EmployeeModel.py --- lib/DB/EmployeeModel.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/DB/EmployeeModel.py b/lib/DB/EmployeeModel.py index 1efa977..e1bae93 100644 --- a/lib/DB/EmployeeModel.py +++ b/lib/DB/EmployeeModel.py @@ -31,10 +31,6 @@ class EmployeeModel(QAbstractTableModel): new_employee['residencetype'] = int(new_employee['residencetype']) self.__employee_dao.addEmployee(new_employee, self.__key, applicant) - @Slot(str) - def viewCriterion(self, criterion, processed = False, fired = False): - self.__getData(criterion, processed, fired) - @Slot(bool) def __refreshView(self, added): if added: