diff --git a/icons/add.svg b/icons/add.svg
new file mode 100644
index 0000000..6a0e78b
--- /dev/null
+++ b/icons/add.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/icons.yaml b/icons/icons.yaml
index 2784f04..0cc6ae6 100644
--- a/icons/icons.yaml
+++ b/icons/icons.yaml
@@ -19,4 +19,5 @@ icons:
quit: quit.svg
history: history.svg
help: help.svg
- support: support.svg
\ No newline at end of file
+ support: support.svg
+ add: add.svg
\ No newline at end of file
diff --git a/src/logic/database.py b/src/logic/database.py
index 79300a4..a3984eb 100644
--- a/src/logic/database.py
+++ b/src/logic/database.py
@@ -311,7 +311,7 @@ class Database:
self.close_connection(conn)
def getActiveLoans(self, userid):
- log.debug("id", str(userid))
+ log.debug("id: {}", userid)
conn = self.connect()
cursor = conn.cursor()
try:
@@ -362,7 +362,7 @@ class Database:
conn.commit()
self.close_connection(conn)
- def insertMedia(self, media):
+ def insertMedia(self, media: Book):
log.debug(f"Inserting Media {media}")
query = f"INSERT OR IGNORE INTO media (ppn, title, signature, isbn,link) VALUES ('{media.ppn}', '{media.title}', '{media.signature}', '{media.isbn}','{media.link}')" # , '{media.link}'
log.info(f"Query: |{query}|")
diff --git a/src/schemas/user.py b/src/schemas/user.py
index f0596c3..58b954a 100644
--- a/src/schemas/user.py
+++ b/src/schemas/user.py
@@ -11,3 +11,13 @@ class User:
def __repr__(self):
return f"Name: {self.username}\nMatrikelnr.: {self.userid}\neMail: {self.email}"
+
+ def match(self, testuser: "User"):
+ name = testuser.username
+ user_id = testuser.userid
+ email = testuser.email
+
+ if name == self.username and email == self.email and user_id == self.userid:
+ return True
+ else:
+ return False
\ No newline at end of file
diff --git a/src/ui/addBook.py b/src/ui/addBook.py
new file mode 100644
index 0000000..9a95ed6
--- /dev/null
+++ b/src/ui/addBook.py
@@ -0,0 +1,25 @@
+from .sources.Ui_dialog_addBook import Ui_Dialog
+from PyQt6 import QtWidgets, QtCore, QtGui
+from src.logic.database import Database
+from src.schemas.book import Book
+
+
+class addBook(QtWidgets.QDialog, Ui_Dialog):
+ def __init__(self):
+ super(addBook, self).__init__()
+ self.setupUi(self)
+ self.setWindowTitle("Buch hinzufügen")
+ self.setWindowIcon(QtGui.QIcon("icons/add.png"))
+ self.btn_save.clicked.connect(self.addBook)
+ self.btn_cancel.clicked.connect(self.close)
+ self.db = Database()
+ self.book_id = None
+
+ def addBook(self):
+ title = self.book_title.text()
+ signature = self.book_signature.text()
+ book = Book(title=title, signature=signature)
+ id = self.db.insertMedia(book)
+ if id:
+ self.book_id = id
+ self.accept()
diff --git a/src/ui/main_ui.py b/src/ui/main_ui.py
index f90432b..e7af8cb 100644
--- a/src/ui/main_ui.py
+++ b/src/ui/main_ui.py
@@ -19,6 +19,7 @@ from .settings import Settings
from .newBook import NewBook
from .loans import LoanWindow
from .reportUi import ReportUi
+from .addBook import addBook
backup = Backup()
cat = Catalogue()
@@ -59,6 +60,7 @@ class MainUI(QtWidgets.QMainWindow, Ui_MainWindow):
self.btn_createNewUser.setText("")
self.btn_createNewUser.setIcon(Icon("add_user").overwriteColor("#1E90FF"))
self.mode.clicked.connect(self.changeMode)
+ self.addBook.clicked.connect(self.addBookAction)
# LineEdits
self.input_userno.returnPressed.connect(
@@ -109,8 +111,19 @@ class MainUI(QtWidgets.QMainWindow, Ui_MainWindow):
Icon("history", self.actionAusleihhistorie)
Icon("help", self.actionDokumentation_ffnen)
Icon("support", self.actionProblem_melden)
+ Icon("add", self.addBook)
self.show()
+ def addBookAction(self):
+ add = addBook()
+ add.setWindowModality(QtCore.Qt.WindowModality.ApplicationModal)
+ add.exec()
+ result = add.result()
+ book_id = add.book_id
+ if result == 1:
+ if self.activeUser:
+ self.loanMedia(self.activeUser.id, book_id)
+ # log.debug(f"UserID: {self.activeUser.id}, BookID: {book_id}")
def shutdown(self, *args):
# kill documentation thread
log.info("Shutting down")
@@ -332,9 +345,9 @@ class MainUI(QtWidgets.QMainWindow, Ui_MainWindow):
self.activeUser = multi.userdata
else:
self.activeUser = user[0]
-
+ log.debug("User: {}", self.activeUser)
if self.activeUser is not None:
- log.info(f"User found {self.activeUser}")
+ log.debug(self.activeUser.__dict__)
self.setUserData()
self.input_file_ident.setFocus()
self.mode.setText("Ausleihe")
diff --git a/src/ui/multiUserInfo.py b/src/ui/multiUserInfo.py
index 4175eba..a2e1cd2 100644
--- a/src/ui/multiUserInfo.py
+++ b/src/ui/multiUserInfo.py
@@ -2,7 +2,7 @@ from .sources.Ui_dialog_multipleUserfound import Ui_Dialog
from PyQt6 import QtCore, QtGui, QtWidgets
from src.schemas import User
from src.utils import Icon
-
+from src import log
class MultiUserFound(QtWidgets.QDialog, Ui_Dialog):
def __init__(self, users: list[User]):
@@ -28,14 +28,19 @@ class MultiUserFound(QtWidgets.QDialog, Ui_Dialog):
def selectUser(self, row, column):
# print(row, column)
- user = User(
- userid=self.tableWidget.item(row, 0).text(),
+ selected_user = User(
+ userid=int(self.tableWidget.item(row, 0).text()),
username=self.tableWidget.item(row, 1).text(),
email=self.tableWidget.item(row, 2).text(),
)
- self.userdata = user
+ # find the selecter in the self.users list
+ for user in self.users:
+ if user.match(selected_user):
+ self.userdata = user
+ break
+ log.debug("User selected: {}", self.userdata)
def displayUsers(self):
for user in self.users:
self.tableWidget.insertRow(0)
diff --git a/src/ui/sources/Ui_main_UserInterface.py b/src/ui/sources/Ui_main_UserInterface.py
index cc7fe5b..db06c20 100644
--- a/src/ui/sources/Ui_main_UserInterface.py
+++ b/src/ui/sources/Ui_main_UserInterface.py
@@ -19,6 +19,38 @@ class Ui_MainWindow(object):
self.verticalLayout.setObjectName("verticalLayout")
self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setObjectName("gridLayout")
+ self.label_2 = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label_2.setObjectName("label_2")
+ self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1)
+ self.input_username = QtWidgets.QLineEdit(parent=self.centralwidget)
+ self.input_username.setObjectName("input_username")
+ self.gridLayout.addWidget(self.input_username, 2, 1, 1, 1)
+ self.input_userno = QtWidgets.QLineEdit(parent=self.centralwidget)
+ self.input_userno.setObjectName("input_userno")
+ self.gridLayout.addWidget(self.input_userno, 1, 1, 1, 1)
+ self.label = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label.setObjectName("label")
+ self.gridLayout.addWidget(self.label, 1, 0, 1, 1)
+ self.input_file_ident = QtWidgets.QLineEdit(parent=self.centralwidget)
+ self.input_file_ident.setObjectName("input_file_ident")
+ self.gridLayout.addWidget(self.input_file_ident, 3, 1, 1, 1)
+ self.label_6 = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label_6.setAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.label_6.setObjectName("label_6")
+ self.gridLayout.addWidget(self.label_6, 5, 0, 1, 1)
+ self.horizontalLayout = QtWidgets.QHBoxLayout()
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.label_5 = QtWidgets.QLabel(parent=self.centralwidget)
+ font = QtGui.QFont()
+ font.setPointSize(14)
+ font.setBold(True)
+ self.label_5.setFont(font)
+ self.label_5.setObjectName("label_5")
+ self.horizontalLayout.addWidget(self.label_5)
+ self.mode = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.mode.setObjectName("mode")
+ self.horizontalLayout.addWidget(self.mode)
+ self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1)
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.duedate = QtWidgets.QDateEdit(parent=self.centralwidget)
@@ -38,32 +70,6 @@ class Ui_MainWindow(object):
self.label_3 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_3.setObjectName("label_3")
self.gridLayout.addWidget(self.label_3, 3, 0, 1, 1)
- self.label_6 = QtWidgets.QLabel(parent=self.centralwidget)
- self.label_6.setAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignVCenter)
- self.label_6.setObjectName("label_6")
- self.gridLayout.addWidget(self.label_6, 5, 0, 1, 1)
- self.horizontalLayout = QtWidgets.QHBoxLayout()
- self.horizontalLayout.setObjectName("horizontalLayout")
- self.label_5 = QtWidgets.QLabel(parent=self.centralwidget)
- font = QtGui.QFont()
- font.setPointSize(14)
- font.setBold(True)
- self.label_5.setFont(font)
- self.label_5.setObjectName("label_5")
- self.horizontalLayout.addWidget(self.label_5)
- self.mode = QtWidgets.QPushButton(parent=self.centralwidget)
- self.mode.setObjectName("mode")
- self.horizontalLayout.addWidget(self.mode)
- self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1)
- self.label = QtWidgets.QLabel(parent=self.centralwidget)
- self.label.setObjectName("label")
- self.gridLayout.addWidget(self.label, 1, 0, 1, 1)
- self.input_username = QtWidgets.QLineEdit(parent=self.centralwidget)
- self.input_username.setObjectName("input_username")
- self.gridLayout.addWidget(self.input_username, 2, 1, 1, 1)
- self.input_file_ident = QtWidgets.QLineEdit(parent=self.centralwidget)
- self.input_file_ident.setObjectName("input_file_ident")
- self.gridLayout.addWidget(self.input_file_ident, 3, 1, 1, 1)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
@@ -72,12 +78,10 @@ class Ui_MainWindow(object):
self.btn_createNewUser.setObjectName("btn_createNewUser")
self.horizontalLayout_3.addWidget(self.btn_createNewUser)
self.gridLayout.addLayout(self.horizontalLayout_3, 0, 1, 1, 1)
- self.label_2 = QtWidgets.QLabel(parent=self.centralwidget)
- self.label_2.setObjectName("label_2")
- self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1)
- self.input_userno = QtWidgets.QLineEdit(parent=self.centralwidget)
- self.input_userno.setObjectName("input_userno")
- self.gridLayout.addWidget(self.input_userno, 1, 1, 1, 1)
+ self.addBook = QtWidgets.QToolButton(parent=self.centralwidget)
+ self.addBook.setText("")
+ self.addBook.setObjectName("addBook")
+ self.gridLayout.addWidget(self.addBook, 3, 2, 1, 1)
self.verticalLayout.addLayout(self.gridLayout)
self.groupBox = QtWidgets.QGroupBox(parent=self.centralwidget)
self.groupBox.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
@@ -143,7 +147,7 @@ class Ui_MainWindow(object):
self.menuFenster = QtWidgets.QMenu(parent=self.menubar)
self.menuFenster.setObjectName("menuFenster")
self.menuHilfe = QtWidgets.QMenu(parent=self.menubar)
- self.menuHilfe.setGeometry(QtCore.QRect(2484, 209, 181, 94))
+ self.menuHilfe.setGeometry(QtCore.QRect(2347, 134, 181, 94))
self.menuHilfe.setObjectName("menuHilfe")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(parent=MainWindow)
@@ -188,13 +192,13 @@ class Ui_MainWindow(object):
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
- self.label_3.setText(_translate("MainWindow", "Signatur"))
+ self.label_2.setText(_translate("MainWindow", "Benutzername"))
+ self.label.setText(_translate("MainWindow", "Matrikelnummer"))
self.label_6.setText(_translate("MainWindow", "Ausleihe bis"))
self.label_5.setText(_translate("MainWindow", "Modus"))
self.mode.setText(_translate("MainWindow", "Rückgabe"))
- self.label.setText(_translate("MainWindow", "Matrikelnummer"))
+ self.label_3.setText(_translate("MainWindow", "Signatur"))
self.btn_createNewUser.setText(_translate("MainWindow", "Neuen Nutzer anlegen"))
- self.label_2.setText(_translate("MainWindow", "Benutzername"))
self.groupBox.setTitle(_translate("MainWindow", "Nutzerdaten"))
self.groupBox_2.setTitle(_translate("MainWindow", "Ausleihdaten"))
self.label_4.setText(_translate("MainWindow", "Anzahl Ausleihen"))
diff --git a/src/ui/sources/dialog_addBook.ui b/src/ui/sources/dialog_addBook.ui
index cab6162..e9a5bc1 100644
--- a/src/ui/sources/dialog_addBook.ui
+++ b/src/ui/sources/dialog_addBook.ui
@@ -2,6 +2,9 @@
Dialog
+
+ Qt::NonModal
+
0
diff --git a/src/ui/sources/main_UserInterface.ui b/src/ui/sources/main_UserInterface.ui
index a18b884..5e01a2c 100644
--- a/src/ui/sources/main_UserInterface.ui
+++ b/src/ui/sources/main_UserInterface.ui
@@ -17,6 +17,63 @@
-
+
-
+
+
+ Benutzername
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ Matrikelnummer
+
+
+
+ -
+
+
+ -
+
+
+ Ausleihe bis
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+
+ -
+
+
-
+
+
+
+ 14
+ true
+
+
+
+ Modus
+
+
+
+ -
+
+
+ Rückgabe
+
+
+
+
+
-
-
@@ -69,53 +126,6 @@
- -
-
-
- Ausleihe bis
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
-
-
-
- -
-
-
-
-
-
-
- 14
- true
-
-
-
- Modus
-
-
-
- -
-
-
- Rückgabe
-
-
-
-
-
- -
-
-
- Matrikelnummer
-
-
-
- -
-
-
- -
-
-
-
-
@@ -140,16 +150,13 @@
- -
-
+
-
+
- Benutzername
+
- -
-
-
-
@@ -281,8 +288,8 @@