rework loan system to use f5 to change mode to avoid confusion

This commit is contained in:
WorldTeacher
2024-07-30 13:07:44 +02:00
parent f1a33e7ea8
commit e1658644ab
3 changed files with 226 additions and 171 deletions

View File

@@ -29,13 +29,9 @@ class MainUI(QtWidgets.QMainWindow, Ui_MainWindow):
self.setupUi(self)
self.setWindowTitle(f"Handbibliotheksleihsystem {config.institution_name}")
self.setWindowIcon(Icon("main").icon)
self.db = Database()
self.currentDate = QtCore.QDate.currentDate()
self.label_7.hide()
self.nextReturnDate.hide()
# add default loan duration to current date
loanDate = self.currentDate.addDays(config.default_loan_duration)
self.duedate.setDate(loanDate)
# hotkeys
self.actionRueckgabemodus.triggered.connect(self.changeMode)
self.actionNutzer.triggered.connect(self.showUser)
@@ -60,6 +56,9 @@ class MainUI(QtWidgets.QMainWindow, Ui_MainWindow):
self.input_userno.textChanged.connect(
lambda: self.validateInput(self.input_userno.text(), "int")
)
self.input_username.setEnabled(False)
self.input_userno.setEnabled(False)
self.duedate.setEnabled(False)
# TableWidget
# set header size to be width/number of columns
self.mediaOverview.horizontalHeader().setSectionResizeMode(
@@ -69,9 +68,16 @@ class MainUI(QtWidgets.QMainWindow, Ui_MainWindow):
# self.userdata.textChanged.connect(lambda: self.mode.setText("Ausleihe"))
# self.input_userno.
# variables
self.db = Database()
self.currentDate = QtCore.QDate.currentDate()
loanDate = self.currentDate.addDays(config.default_loan_duration)
self.activeUser = None
self.activeState = "Rückgabe"
self.duedate.setDate(loanDate)
# functions
self.activateReturnMode()
if backup.backup:
log.info("Backup enabled")
else:
@@ -102,17 +108,41 @@ class MainUI(QtWidgets.QMainWindow, Ui_MainWindow):
def changeMode(self):
log.info("Changing Mode")
dbg(f"Current mode: {self.mode.text()}")
self.mode.setText("Rückgabe")
dbg(f"Current mode: {self.activeState}")
self.input_username.clear()
self.input_userno.clear()
self.userdata.clear()
self.input_userno.clear()
self.btn_show_lentmedia.setText("")
self.input_file_ident.clear()
self.label_7.hide()
self.nextReturnDate.hide()
self.mediaOverview.setRowCount(0)
if self.activeState == "Rückgabe":
self.activateLoanMode()
else:
self.activateReturnMode()
def activateLoanMode(self):
dbg("Activating Loan Mode")
self.input_username.setEnabled(True)
self.input_userno.setEnabled(True)
self.duedate.setEnabled(True)
self.input_userno.setFocus()
# set mode background color to blue with rounded edges
# self.mode.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.mode.setStyleSheet("background-color: #1E90FF")
self.mode.setText("Ausleihe")
self.activeState = "Ausleihe"
def activateReturnMode(self):
dbg("Activating Return Mode")
self.input_username.setEnabled(False)
self.input_userno.setEnabled(False)
# set mode background color to orange
self.mode.setStyleSheet("background-color: #FFA500")
self.duedate.setEnabled(False)
self.activeState = "Rückgabe"
self.mode.setText("Rückgabe")
def showUser(self):
log.info(f"Showing User {self.activeUser}")
@@ -138,7 +168,7 @@ class MainUI(QtWidgets.QMainWindow, Ui_MainWindow):
self.input_username.setText(self.activeUser.username)
self.input_userno.setText(str(self.activeUser.id))
self.userdata.setText(self.activeUser.__repr__())
self.mode.setText("Ausleihe")
# self.mode.setText("Ausleihe")
def createUser(self):
log.info("Creating User")
@@ -151,6 +181,7 @@ class MainUI(QtWidgets.QMainWindow, Ui_MainWindow):
self.activeUser = data
# set user to active user
self.setUserData()
self.activateLoanMode()
self.input_file_ident.setFocus()
@@ -239,35 +270,15 @@ class MainUI(QtWidgets.QMainWindow, Ui_MainWindow):
self.input_file_ident.setEnabled(True)
return
book_id = self.db.insertMedia(media)
# self.db.insertLoan(
# userid=user_id,
# mediaid=book_id,
# loandate=self.currentDate.toString("yyyy-MM-dd"),
# duedate=self.duedate.date().toString("yyyy-MM-dd"),
# )
# self.mediaOverview.insertRow(0)
# self.mediaOverview.setItem(0, 0, QtWidgets.QTableWidgetItem(media.isbn))
# self.mediaOverview.setItem(
# 0, 1, QtWidgets.QTableWidgetItem(media.title)
# )
# self.mediaOverview.setItem(
# 0, 2, QtWidgets.QTableWidgetItem("Entliehen")
# )
# return
self.loanMedia(user_id, [book_id], media)
else:
newbook = NewBook()
newbook.exec()
if newbook.result() == 1:
media = newbook.book
book_id = self.db.insertMedia(media)
# self.db.insertLoan(
# userid=user_id,
# mediaid=book_id,
# loandate=self.currentDate.toString(),
# duedate=self.duedate.date().toString(),
# )
if book_id:
elif book_id:
if isinstance(book_id, list) and len(book_id) > 1:
# print("Multiple Books found")
# TODO: implement book selection dialog
@@ -302,28 +313,28 @@ class MainUI(QtWidgets.QMainWindow, Ui_MainWindow):
self.setStatusTipMessage("Neues Exemplar hinzugefügt")
# print(created_ids)
self.input_file_ident.setEnabled(True)
newentries = newentry.newIds
if newentries:
for entry in newentries:
book = self.db.getMedia(entry)
self.loanMedia(user_id, [entry], book)
dbg("inserted duplicated book into database")
return
else:
# print("Book not loaned, loaning now")
self.db.insertLoan(
user_id,
book_id[0],
self.currentDate.toString("yyyy-MM-dd"),
self.duedate.date().toString("yyyy-MM-dd"),
)
self.mediaOverview.insertRow(0)
self.mediaOverview.setItem(
0, 0, QtWidgets.QTableWidgetItem(media.isbn)
)
self.mediaOverview.setItem(
0, 1, QtWidgets.QTableWidgetItem(media.title)
)
self.mediaOverview.setItem(
0, 2, QtWidgets.QTableWidgetItem("Entliehen")
)
# else:
self.loanMedia(user_id, book_id, media)
def loanMedia(self, user_id, book_id, media):
self.db.insertLoan(
user_id,
book_id[0],
self.currentDate.toString("yyyy-MM-dd"),
self.duedate.date().toString("yyyy-MM-dd"),
)
self.mediaOverview.insertRow(0)
self.mediaOverview.setItem(0, 0, QtWidgets.QTableWidgetItem(media.signature))
self.mediaOverview.setItem(0, 1, QtWidgets.QTableWidgetItem(media.title))
self.mediaOverview.setItem(0, 2, QtWidgets.QTableWidgetItem("Entliehen"))
self.btn_show_lentmedia.setText(self.db.getActiveLoans(self.activeUser.id))
self.nextReturnDate.setText(
stringToDate(self.db.selectClosestReturnDate(self.activeUser.id)).toString(