update files, bring to latest code

This commit is contained in:
WorldTeacher
2024-07-18 11:57:20 +02:00
parent 891eb3e90a
commit ae2e588780
14 changed files with 686 additions and 60 deletions

View File

@@ -2,6 +2,8 @@ from .sources.Ui_main_userData import Ui_MainWindow
from PyQt6 import QtCore, QtGui, QtWidgets
from src.logic import Database
from src.schemas import User
from .extendLoan import ExtendLoan
from src.utils.stringtodate import stringToDate
class UserUI(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self, u_name, u_no, u_mail):
super(UserUI, self).__init__()
@@ -11,12 +13,27 @@ class UserUI(QtWidgets.QMainWindow, Ui_MainWindow):
self.userno = u_no
self.usermail = u_mail
self.setFields()
self.userMedia = []
self.loadMedia()
# Buttons
self.btn_userChange_save.clicked.connect(self.saveChanges)
self.btn_userchange_cancel.clicked.connect(self.discardChanges)
self.btn_extendSelectedMedia.clicked.connect(self.extendLoan)
# radioButtons
self.radio_allLoanedMedia.clicked.connect(self.loadMedia)
self.radio_currentlyLoaned.clicked.connect(self.loadMedia)
self.radio_overdueLoans.clicked.connect(self.loadMedia)
# frames
self.frame.hide()
# table
self.UserMediaTable.horizontalHeader().setSectionResizeMode(
QtWidgets.QHeaderView.ResizeMode.Stretch
)
# if one or more rows is selected, enable btn
self.UserMediaTable.itemSelectionChanged.connect(self.userTableAction)
# LineEdits
# self.frame.hide()
@@ -26,6 +43,32 @@ class UserUI(QtWidgets.QMainWindow, Ui_MainWindow):
self.show()
def extendLoan(self):
extend = ExtendLoan(self.username, self.userMedia)
extend.exec()
extendDate = extend.extendDate.toString()
# print columns of selected rows
for item in self.UserMediaTable.selectedItems():
if item.column() == 1:
signature = item.text()
print(signature)
self.db.extendLoanDuration(signature, extendDate)
self.userMedia = []
break
self.UserMediaTable.setRowCount(0)
self.loadMedia()
def userTableAction(self):
if self.UserMediaTable.selectedItems():
# if any selected item has a value in column 5, disable btn
for item in self.UserMediaTable.selectedItems():
if item.column() == 5 and item.text() != "":
self.btn_extendSelectedMedia.setEnabled(False)
return
self.btn_extendSelectedMedia.setEnabled(True)
else:
self.btn_extendSelectedMedia.setEnabled(False)
def showFrame(self):
self.frame.show()
@@ -39,4 +82,68 @@ class UserUI(QtWidgets.QMainWindow, Ui_MainWindow):
def discardChanges(self):
self.setFields()
self.frame.hide()
self.frame.hide()
def loadMedia(self):
mode = (
"all"
if self.radio_allLoanedMedia.isChecked()
else "current"
if self.radio_currentlyLoaned.isChecked()
else "overdue"
)
print(mode)
if self.userMedia == []:
books = self.db.getAllMedia(self.userno)
for book in books:
self.userMedia.append(book)
print(self.userMedia)
self.UserMediaTable.setRowCount(0)
for book in self.userMedia:
# fromdate = stringToDate(book.loan_from)
todate = stringToDate(book.loan_to)
if mode == "current":
# book not returned
if book.returned == 0:
self.addBookToTable(book)
elif mode == "overdue":
# book not returned and todays date is greater than todate
if (
book.returned == 0
and QtCore.QDate.fromString(todate) > QtCore.QDate.currentDate()
):
self.addBookToTable(book)
else:
self.addBookToTable(book)
def addBookToTable(self, book):
self.UserMediaTable.insertRow(0)
# item0 = isbn
# item1 = signature
# item2 = title
# item3 = loan date
# item4 = return date
# item5 = returned_date
self.UserMediaTable.setItem(
0,
0,
QtWidgets.QTableWidgetItem(book.isbn if book.isbn != "None" else ""),
)
self.UserMediaTable.setItem(0, 1, QtWidgets.QTableWidgetItem(book.signature))
self.UserMediaTable.setItem(0, 2, QtWidgets.QTableWidgetItem(book.title))
self.UserMediaTable.setItem(0, 3, QtWidgets.QTableWidgetItem(book.loan_from))
self.UserMediaTable.setItem(0, 4, QtWidgets.QTableWidgetItem(book.loan_to))
self.UserMediaTable.setItem(
0, 5, QtWidgets.QTableWidgetItem(book.returned_date)
)
def launch():
import sys
app = QtWidgets.QApplication(sys.argv)
window = UserUI("Test", "132", "sdf@f.de")
window.show()
sys.exit(app.exec())