rework loan system to use f5 to change mode to avoid confusion
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user