This commit is contained in:
WorldTeacher
2024-07-30 16:10:02 +02:00
parent 27ec7c296a
commit c3ff3e93ee
8 changed files with 59 additions and 22 deletions

View File

@@ -12,3 +12,4 @@ class Loan:
returned: int returned: int
returned_date: str returned_date: str
book: Book book: Book
user_name: str

View File

@@ -3,8 +3,6 @@ from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtGui import QRegularExpressionValidator from PyQt6.QtGui import QRegularExpressionValidator
from src.logic import Database from src.logic import Database
from src.utils import Icon, Log from src.utils import Icon, Log
from src.schemas import User
import re
class CreateUser(QtWidgets.QDialog, Ui_Dialog): class CreateUser(QtWidgets.QDialog, Ui_Dialog):
def __init__(self, fieldname, data): def __init__(self, fieldname, data):
@@ -58,8 +56,20 @@ class CreateUser(QtWidgets.QDialog, Ui_Dialog):
username = self.username.text() username = self.username.text()
userno = int(self.userno.text()) userno = int(self.userno.text())
usermail = self.user_mail.text() usermail = self.user_mail.text()
self.db.insertUser(username, userno, usermail) if self.db.insertUser(username, userno, usermail):
self.userid = userno 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): def validateInputUserno(self, value, type):
lastchar = value[-1] if value else "" lastchar = value[-1] if value else ""

View File

@@ -9,7 +9,7 @@ from icecream import ic
TABLETOFIELDTRANSLATE = { TABLETOFIELDTRANSLATE = {
"Titel": "book.title", "Titel": "book.title",
"Signatur": "book.signature", "Signatur": "book.signature",
"Nutzer": "user_id", "Nutzer": "user_name",
} }
@@ -28,6 +28,7 @@ class LoanWindow(QtWidgets.QMainWindow, Ui_MainWindow):
# lineedits # lineedits
self.searchbar.textChanged.connect(self.limitResults) self.searchbar.textChanged.connect(self.limitResults)
self.searchbar.returnPressed.connect(self.passThis)
# radio buttons # radio buttons
self.radio_all.clicked.connect(self.filterResults) self.radio_all.clicked.connect(self.filterResults)
@@ -38,16 +39,40 @@ class LoanWindow(QtWidgets.QMainWindow, Ui_MainWindow):
self.loanTable.doubleClicked.connect(self.showUser) self.loanTable.doubleClicked.connect(self.showUser)
self.show() self.show()
def passThis(self):
pass
def insertRow(self, data): def insertRow(self, data):
dbg(contents=data) dbg(contents=data)
retdate = (
stringToDate(data.return_date).toString("dd.MM.yyyy")
if data.return_date != ""
else ""
)
self.loanTable.insertRow(0) self.loanTable.insertRow(0)
self.loanTable.setItem(0, 0, QtWidgets.QTableWidgetItem(data.book.isbn)) self.loanTable.setItem(0, 0, QtWidgets.QTableWidgetItem(data.book.isbn))
self.loanTable.setItem(0, 1, QtWidgets.QTableWidgetItem(data.book.signature)) self.loanTable.setItem(0, 1, QtWidgets.QTableWidgetItem(data.book.signature))
self.loanTable.setItem(0, 2, QtWidgets.QTableWidgetItem(data.book.title)) self.loanTable.setItem(0, 2, QtWidgets.QTableWidgetItem(data.book.title))
self.loanTable.setItem(0, 3, QtWidgets.QTableWidgetItem(str(data.user_id))) self.loanTable.setItem(
self.loanTable.setItem(0, 4, QtWidgets.QTableWidgetItem(data.loan_date)) 0,
self.loanTable.setItem(0, 5, QtWidgets.QTableWidgetItem(data.return_date)) 3,
self.loanTable.setItem(0, 6, QtWidgets.QTableWidgetItem(data.returned_date)) 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): def loadLoans(self):
loans = self.db.getAllLoans() loans = self.db.getAllLoans()
@@ -83,9 +108,10 @@ class LoanWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def limitResults(self): def limitResults(self):
limiter = self.searchbar.text().lower() limiter = self.searchbar.text().lower()
limiter = str(limiter)
searchfield = self.searchFields.currentText() searchfield = self.searchFields.currentText()
searchfield = TABLETOFIELDTRANSLATE[searchfield] searchfield = TABLETOFIELDTRANSLATE[searchfield]
# dbg(limiter=limiter, search=searchfield) dbg(limiter=limiter, search=searchfield)
self.loanTable.setRowCount(0) self.loanTable.setRowCount(0)
for loan in self.loans: for loan in self.loans:
fielddata = eval(f"loan.{searchfield}") fielddata = eval(f"loan.{searchfield}")
@@ -96,9 +122,8 @@ class LoanWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def showUser(self): def showUser(self):
row = self.loanTable.currentRow() row = self.loanTable.currentRow()
user_id = self.loanTable.item(row, 3).text() user_name = self.loanTable.item(row, 3).text()
user_id = int(user_id) user = self.db.getUserId(user_name)
user = self.db.getUser(user_id)
self.user = UserUI(user.username, user.id, user.email) self.user = UserUI(user.username, user.id, user.email)
self.user.show() self.user.show()

View File

@@ -384,7 +384,7 @@ class MainUI(QtWidgets.QMainWindow, Ui_MainWindow):
def setStatusTipMessage(self, message): def setStatusTipMessage(self, message):
dialog = QtWidgets.QMessageBox() dialog = QtWidgets.QMessageBox()
dialog.setWindowTitle("Fehler") dialog.setWindowTitle("Information")
dialog.setIcon(QtWidgets.QMessageBox.Icon.Information) dialog.setIcon(QtWidgets.QMessageBox.Icon.Information)
dialog.setWindowIcon(Icon("error").overwriteColor("#EA3323")) dialog.setWindowIcon(Icon("error").overwriteColor("#EA3323"))
dialog.setText(message) dialog.setText(message)

View File

@@ -29,7 +29,7 @@ class ReportUi(QtWidgets.QDialog, Ui_Dialog):
self.radio_month.clicked.connect(self.set_days_by_radio) self.radio_month.clicked.connect(self.set_days_by_radio)
self.radio_week.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_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_csv.clicked.connect(lambda: self.generateReport.setEnabled(True))
self.format_txt.clicked.connect(lambda: self.generateReport.setEnabled(True)) self.format_txt.clicked.connect(lambda: self.generateReport.setEnabled(True))
# sliders # sliders
@@ -59,7 +59,6 @@ class ReportUi(QtWidgets.QDialog, Ui_Dialog):
self.dayValue.setText(str(value)) self.dayValue.setText(str(value))
def generate_report(self): def generate_report(self):
print(self.days)
self.rthread.setDays(self.days) self.rthread.setDays(self.days)
self.rthread.report_signal.connect(self.report_generated) self.rthread.report_signal.connect(self.report_generated)
self.rthread.report_nums_signal.connect(self.show_progress) self.rthread.report_nums_signal.connect(self.show_progress)

View File

@@ -57,7 +57,7 @@ class UserUI(QtWidgets.QMainWindow, Ui_MainWindow):
extend = ExtendLoan(self.username, self.userMedia) extend = ExtendLoan(self.username, self.userMedia)
extend.exec() extend.exec()
if extend.result() == 1: if extend.result() == 1:
extendDate = extend.extendDate.toString() extendDate = extend.extendDate.toString("yyyy-MM-dd")
# # print columns of selected rows # # print columns of selected rows
for item in self.UserMediaTable.selectedItems(): for item in self.UserMediaTable.selectedItems():
if item.column() == 1: if item.column() == 1:

View File

@@ -27,7 +27,6 @@ class ReportThread(QThread):
path = db.db_path path = db.db_path
day = QDate.currentDate().addDays(-self.days).toString("yyyy-MM-dd") day = QDate.currentDate().addDays(-self.days).toString("yyyy-MM-dd")
query = f"""SELECT * FROM loans WHERE loan_date >= '{day}';""" query = f"""SELECT * FROM loans WHERE loan_date >= '{day}';"""
print(query)
colnames = ["UserId", "Title", "Action", "Datum"] colnames = ["UserId", "Title", "Action", "Datum"]
table = PrettyTable(colnames) table = PrettyTable(colnames)
table.align[colnames[0]] = "l" table.align[colnames[0]] = "l"
@@ -57,9 +56,12 @@ class ReportThread(QThread):
) )
# # print(table) # # print(table)
# # wruitng the table to a file # # wruitng the table to a file
if self.format == "csv": if self.format == "tsv":
with open("report.csv", "w", encoding="utf-8") as f: table = table.get_csv_string()
f.write(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: else:
with open("report.txt", "w", encoding="utf-8") as f: with open("report.txt", "w", encoding="utf-8") as f:
f.write(str(table)) f.write(str(table))

View File

@@ -14,7 +14,7 @@ def stringToDate(date: str) -> QtCore.QDate:
if not date: if not date:
return "" return ""
if isinstance(date, QtCore.QDate): if isinstance(date, QtCore.QDate):
return date.toString("yyyy-MM-dd") return date
else: else:
datedata = date.split("-") datedata = date.split("-")
day = datedata[2] day = datedata[2]