diff --git a/src/schemas/loan.py b/src/schemas/loan.py index fe0c944..1e4c8cf 100644 --- a/src/schemas/loan.py +++ b/src/schemas/loan.py @@ -12,3 +12,4 @@ class Loan: returned: int returned_date: str book: Book + user_name: str \ No newline at end of file diff --git a/src/ui/createUser.py b/src/ui/createUser.py index a91c5a4..b90cd97 100644 --- a/src/ui/createUser.py +++ b/src/ui/createUser.py @@ -3,8 +3,6 @@ from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6.QtGui import QRegularExpressionValidator from src.logic import Database from src.utils import Icon, Log -from src.schemas import User -import re class CreateUser(QtWidgets.QDialog, Ui_Dialog): def __init__(self, fieldname, data): @@ -58,8 +56,20 @@ class CreateUser(QtWidgets.QDialog, Ui_Dialog): username = self.username.text() userno = int(self.userno.text()) usermail = self.user_mail.text() - self.db.insertUser(username, userno, usermail) - self.userid = userno + if self.db.insertUser(username, userno, usermail): + self.userid = userno + else: + self.setStatusTipMessage( + "Benutzer konnte nicht erstellt werden, bitte überprüfen Sie die Eingaben" + ) + + def setStatusTipMessage(self, message): + dialog = QtWidgets.QMessageBox() + dialog.setWindowTitle("Information") + dialog.setIcon(QtWidgets.QMessageBox.Icon.Information) + dialog.setWindowIcon(Icon("error").overwriteColor("#EA3323")) + dialog.setText(message) + dialog.exec() def validateInputUserno(self, value, type): lastchar = value[-1] if value else "" diff --git a/src/ui/loans.py b/src/ui/loans.py index 3032699..f50488b 100644 --- a/src/ui/loans.py +++ b/src/ui/loans.py @@ -9,7 +9,7 @@ from icecream import ic TABLETOFIELDTRANSLATE = { "Titel": "book.title", "Signatur": "book.signature", - "Nutzer": "user_id", + "Nutzer": "user_name", } @@ -28,6 +28,7 @@ class LoanWindow(QtWidgets.QMainWindow, Ui_MainWindow): # lineedits self.searchbar.textChanged.connect(self.limitResults) + self.searchbar.returnPressed.connect(self.passThis) # radio buttons self.radio_all.clicked.connect(self.filterResults) @@ -38,16 +39,40 @@ class LoanWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.loanTable.doubleClicked.connect(self.showUser) self.show() + def passThis(self): + pass + def insertRow(self, data): dbg(contents=data) + retdate = ( + stringToDate(data.return_date).toString("dd.MM.yyyy") + if data.return_date != "" + else "" + ) self.loanTable.insertRow(0) self.loanTable.setItem(0, 0, QtWidgets.QTableWidgetItem(data.book.isbn)) self.loanTable.setItem(0, 1, QtWidgets.QTableWidgetItem(data.book.signature)) self.loanTable.setItem(0, 2, QtWidgets.QTableWidgetItem(data.book.title)) - self.loanTable.setItem(0, 3, QtWidgets.QTableWidgetItem(str(data.user_id))) - self.loanTable.setItem(0, 4, QtWidgets.QTableWidgetItem(data.loan_date)) - self.loanTable.setItem(0, 5, QtWidgets.QTableWidgetItem(data.return_date)) - self.loanTable.setItem(0, 6, QtWidgets.QTableWidgetItem(data.returned_date)) + self.loanTable.setItem( + 0, + 3, + QtWidgets.QTableWidgetItem(str(self.db.getUser(data.user_id).username)), + ) + self.loanTable.setItem( + 0, + 4, + QtWidgets.QTableWidgetItem( + stringToDate(data.loan_date).toString("dd.MM.yyyy") + ), + ) + self.loanTable.setItem( + 0, + 5, + QtWidgets.QTableWidgetItem( + stringToDate(data.return_date).toString("dd.MM.yyyy") + ), + ) + self.loanTable.setItem(0, 6, QtWidgets.QTableWidgetItem(retdate)) def loadLoans(self): loans = self.db.getAllLoans() @@ -83,9 +108,10 @@ class LoanWindow(QtWidgets.QMainWindow, Ui_MainWindow): def limitResults(self): limiter = self.searchbar.text().lower() + limiter = str(limiter) searchfield = self.searchFields.currentText() searchfield = TABLETOFIELDTRANSLATE[searchfield] - # dbg(limiter=limiter, search=searchfield) + dbg(limiter=limiter, search=searchfield) self.loanTable.setRowCount(0) for loan in self.loans: fielddata = eval(f"loan.{searchfield}") @@ -96,9 +122,8 @@ class LoanWindow(QtWidgets.QMainWindow, Ui_MainWindow): def showUser(self): row = self.loanTable.currentRow() - user_id = self.loanTable.item(row, 3).text() - user_id = int(user_id) - user = self.db.getUser(user_id) + user_name = self.loanTable.item(row, 3).text() + user = self.db.getUserId(user_name) self.user = UserUI(user.username, user.id, user.email) self.user.show() diff --git a/src/ui/main_ui.py b/src/ui/main_ui.py index da9412f..ff766a5 100644 --- a/src/ui/main_ui.py +++ b/src/ui/main_ui.py @@ -384,7 +384,7 @@ class MainUI(QtWidgets.QMainWindow, Ui_MainWindow): def setStatusTipMessage(self, message): dialog = QtWidgets.QMessageBox() - dialog.setWindowTitle("Fehler") + dialog.setWindowTitle("Information") dialog.setIcon(QtWidgets.QMessageBox.Icon.Information) dialog.setWindowIcon(Icon("error").overwriteColor("#EA3323")) dialog.setText(message) diff --git a/src/ui/reportUi.py b/src/ui/reportUi.py index e68bc3e..9a1695c 100644 --- a/src/ui/reportUi.py +++ b/src/ui/reportUi.py @@ -29,7 +29,7 @@ class ReportUi(QtWidgets.QDialog, Ui_Dialog): self.radio_month.clicked.connect(self.set_days_by_radio) self.radio_week.clicked.connect(self.set_days_by_radio) self.format_txt.clicked.connect(lambda: self.rthread.setFormat("txt")) - self.format_csv.clicked.connect(lambda: self.rthread.setFormat("csv")) + self.format_csv.clicked.connect(lambda: self.rthread.setFormat("tsv")) self.format_csv.clicked.connect(lambda: self.generateReport.setEnabled(True)) self.format_txt.clicked.connect(lambda: self.generateReport.setEnabled(True)) # sliders @@ -59,7 +59,6 @@ class ReportUi(QtWidgets.QDialog, Ui_Dialog): self.dayValue.setText(str(value)) def generate_report(self): - print(self.days) self.rthread.setDays(self.days) self.rthread.report_signal.connect(self.report_generated) self.rthread.report_nums_signal.connect(self.show_progress) diff --git a/src/ui/user.py b/src/ui/user.py index 86ca5b2..1176021 100644 --- a/src/ui/user.py +++ b/src/ui/user.py @@ -57,7 +57,7 @@ class UserUI(QtWidgets.QMainWindow, Ui_MainWindow): extend = ExtendLoan(self.username, self.userMedia) extend.exec() if extend.result() == 1: - extendDate = extend.extendDate.toString() + extendDate = extend.extendDate.toString("yyyy-MM-dd") # # print columns of selected rows for item in self.UserMediaTable.selectedItems(): if item.column() == 1: diff --git a/src/utils/reportThread.py b/src/utils/reportThread.py index ac83103..b5eff7a 100644 --- a/src/utils/reportThread.py +++ b/src/utils/reportThread.py @@ -27,7 +27,6 @@ class ReportThread(QThread): path = db.db_path day = QDate.currentDate().addDays(-self.days).toString("yyyy-MM-dd") query = f"""SELECT * FROM loans WHERE loan_date >= '{day}';""" - print(query) colnames = ["UserId", "Title", "Action", "Datum"] table = PrettyTable(colnames) table.align[colnames[0]] = "l" @@ -57,9 +56,12 @@ class ReportThread(QThread): ) # # print(table) # # wruitng the table to a file - if self.format == "csv": - with open("report.csv", "w", encoding="utf-8") as f: - f.write(table.get_csv_string()) + if self.format == "tsv": + table = table.get_csv_string() + tsv_table = table.replace(",", "\t") + # write the file + with open("report.tsv", "w", encoding="utf-8") as f: + f.write(tsv_table) else: with open("report.txt", "w", encoding="utf-8") as f: f.write(str(table)) diff --git a/src/utils/stringtodate.py b/src/utils/stringtodate.py index 9a8ad55..98cabb3 100644 --- a/src/utils/stringtodate.py +++ b/src/utils/stringtodate.py @@ -14,7 +14,7 @@ def stringToDate(date: str) -> QtCore.QDate: if not date: return "" if isinstance(date, QtCore.QDate): - return date.toString("yyyy-MM-dd") + return date else: datedata = date.split("-") day = datedata[2]