diff --git a/src/logic/csvparser.py b/src/logic/csvparser.py index 3734bb3..c9be28f 100644 --- a/src/logic/csvparser.py +++ b/src/logic/csvparser.py @@ -12,7 +12,6 @@ def csv_to_list(path: str) -> list[str]: reader = csv.reader(csvfile, delimiter=";", quotechar="|") ret = [] for row in reader: - print(row) ret.append(row[0].replace('"', "")) return ret @@ -20,4 +19,4 @@ def csv_to_list(path: str) -> list[str]: if __name__ == "__main__": text = csv_to_list("C:/Users/aky547/Desktop/semap/71.csv") # remove linebreaks - print(text) + # print(text) diff --git a/src/logic/dataclass.py b/src/logic/dataclass.py index f219706..65801e7 100644 --- a/src/logic/dataclass.py +++ b/src/logic/dataclass.py @@ -21,7 +21,7 @@ class ApparatData: def get_prof_details(self) -> dict: return { - "prof_title": self.prof_title, + "title": self.prof_title, "profname": self.profname, "prof_mail": self.prof_mail, "prof_tel": self.prof_tel, @@ -62,7 +62,7 @@ class BookData: else: pattern = r"(\w+)='([^']*)'" data_dict = dict(re.findall(pattern, data)) - print(data_dict) + # print(data_dict) for key, value in data_dict.items(): setattr(self, key, value) return self diff --git a/src/logic/thread_bookgrabber.py b/src/logic/thread_bookgrabber.py index 2c13874..451b853 100644 --- a/src/logic/thread_bookgrabber.py +++ b/src/logic/thread_bookgrabber.py @@ -35,26 +35,31 @@ class BookGrabber(QThread): self.logger.log_info(f"Working on {len(self.data)} entries") self.tstate = (self.app_id, self.prof_id, self.mode, self.data) self.logger.log_debug("State: " + str(self.tstate)) - print(self.tstate) + # print(self.tstate) def run(self): self.db = Database() item = 0 iterdata = self.data - print(iterdata) + # print(iterdata) + if self.prof_id is None: + self.prof_id = self.db.getProfNameByApparat(self.app_id) for entry in iterdata: - print(entry) + # print(entry) signature = str(entry) self.logger.log_info("Processing entry: " + signature) webdata = WebRequest(self.appnr).get_ppn(entry).get_data() if webdata == "error": continue + bd = BibTextTransformer(self.mode).get_data(webdata).return_data() bd.signature = entry transformer = ( BibTextTransformer("RDS").get_data(webdata).return_data("rds_data") ) + if bd is None: + continue # confirm lock is acquired self.db.addBookToDatabase(bd, self.app_id, self.prof_id) # get latest book id @@ -62,13 +67,13 @@ class BookGrabber(QThread): self.logger.log_info("Added book to database") state = 0 for result in transformer.RDS_DATA: - print(result.RDS_LOCATION) + # print(result.RDS_LOCATION) if str(self.app_id) in result.RDS_LOCATION: state = 1 break self.logger.log_info(f"State of {signature}: {state}") - print("updating availability of " + str(self.book_id) + " to " + str(state)) + # print("updating availability of " + str(self.book_id) + " to " + str(state)) try: self.db.setAvailability(self.book_id, state) except sqlite3.OperationalError as e: @@ -100,7 +105,7 @@ class BookGrabber(QThread): # self.mode = mode # self.book_id = None # self.state = (self.app_id, self.prof_id, self.mode, self.data) -# print(self.state) +# # print(self.state) # self.logger.log_info("state: " + str(self.state)) # # time.sleep(2) @@ -116,9 +121,9 @@ class BookGrabber(QThread): # self.db = Database() # item = 0 # iterdata = self.data -# print(iterdata) +# # print(iterdata) # for entry in iterdata: -# print(entry) +# # print(entry) # signature = str(entry) # self.logger.log_info("Processing entry: " + signature) @@ -135,7 +140,7 @@ class BookGrabber(QThread): # self.book_id = self.db.getLastBookId() # self.logger.log_info("Added book to database") # state = 0 -# print(len(rds.items)) +# # print(len(rds.items)) # for rds_item in rds.items: # sign = rds_item.superlocation # loc = rds_item.location @@ -146,7 +151,7 @@ class BookGrabber(QThread): # break # self.logger.log_info(f"State of {signature}: {state}") -# print( +# # print( # "updating availability of " # + str(self.book_id) # + " to " diff --git a/src/logic/threads_autoadder.py b/src/logic/threads_autoadder.py index 3354013..4ba2fb1 100644 --- a/src/logic/threads_autoadder.py +++ b/src/logic/threads_autoadder.py @@ -23,8 +23,8 @@ class AutoAdder(QThread): self.app_id = app_id self.prof_id = prof_id - print("Launched AutoAdder") - print(self.data, self.app_id, self.prof_id) + # print("Launched AutoAdder") + # print(self.data, self.app_id, self.prof_id) def run(self): self.db = Database() @@ -41,11 +41,11 @@ class AutoAdder(QThread): # qsleep item += 1 self.progress.emit(item) - print(item, len(self.data)) + # print(item, len(self.data)) time.sleep(1) except Exception as e: - print(e) + # print(e) self.logger.log_exception( f"The query failed with message {e} for signature {entry}" ) diff --git a/src/logic/threads_availchecker.py b/src/logic/threads_availchecker.py index 431e3dd..def135d 100644 --- a/src/logic/threads_availchecker.py +++ b/src/logic/threads_availchecker.py @@ -52,7 +52,7 @@ class AvailChecker(QThread): for item in rds.items: sign = item.superlocation loc = item.location - # print(item.location) + # # print(item.location) if self.appnumber in sign or self.appnumber in loc: state = 1 break @@ -61,7 +61,7 @@ class AvailChecker(QThread): book_id = book["id"] break self.logger.log_info(f"State of {link}: " + str(state)) - print("Updating availability of " + str(book_id) + " to " + str(state)) + # print("Updating availability of " + str(book_id) + " to " + str(state)) self.db.setAvailability(book_id, state) count += 1 self.updateProgress.emit(count, len(self.links)) diff --git a/src/logic/zotero.py b/src/logic/zotero.py index c97477c..0835866 100644 --- a/src/logic/zotero.py +++ b/src/logic/zotero.py @@ -184,7 +184,7 @@ class ZoteroController: book = bib.return_data() return book - # print(zot.item_template("bookSection")) + # # print(zot.item_template("bookSection")) def createBook(self, isbn): book = self.__get_data(isbn) @@ -207,7 +207,7 @@ class ZoteroController: def createItem(self, item): resp = self.zot.create_items([item]) if "successful" in resp.keys(): - print(resp["successful"]["0"]["key"]) + # print(resp["successful"]["0"]["key"]) return resp["successful"]["0"]["key"] else: return None @@ -217,7 +217,7 @@ class ZoteroController: for item in items: if item["key"] == key: self.zot.delete_item(item) - print(item) + # print(item) break def createHGSection(self, book: Book, data: dict): @@ -238,7 +238,7 @@ class ZoteroController: ] chapter.creators += authors - print(chapter.to_dict()) + # print(chapter.to_dict()) return self.createItem(chapter.to_dict()) pass @@ -254,7 +254,7 @@ class ZoteroController: # chapter.creators def createJournalArticle(self, journal, article): - print(type(article)) + # print(type(article)) journalarticle = JournalArticle() journalarticle.assign(journal) journalarticle.itemType = "journalArticle" @@ -270,7 +270,7 @@ class ZoteroController: journalarticle.issue = article["issue"] journalarticle.url = article["isbn"] - print(journalarticle.to_dict()) + # print(journalarticle.to_dict()) return self.createItem(journalarticle.to_dict()) @@ -316,16 +316,16 @@ if __name__ == "__main__": # if isinstance(publishers, str): # publishers = [publishers] # for publisher in publishers: - # print(publisher) + # # print(publisher) # creator = Creator().from_string(publisher) # creator.creatorType = "editor" # authors.append(creator.__dict__) # chapter.creators = authors # chapter.publisher = book.publisher - # print(chapter.to_dict()) + # # print(chapter.to_dict()) # createBookSection(chapter.to_dict()) # get_citation("9ZXH8DDE") - # # print() - # print(get_books()) - # print(zot.item_creator_types("bookSection")) + # # # print() + # # print(get_books()) + # # print(zot.item_creator_types("bookSection")) diff --git a/src/transformers/transformers.py b/src/transformers/transformers.py index 7c481e5..1b4da57 100644 --- a/src/transformers/transformers.py +++ b/src/transformers/transformers.py @@ -133,10 +133,8 @@ class ARRAYData: return data except Exception: - # print(f"ARRAYData.transform failed, {source}, {search}") - logger.log_exception( - f"ARRAYData.transform failed, no string {search}, {source}, {search}" - ) + # # print(f"ARRAYData.transform failed, {source}, {search}") + logger.log_exception(f"ARRAYData.transform failed, no string {search}") return "" def _get_list_entry(source: str, search: str, entry: str) -> str: @@ -218,9 +216,20 @@ class ARRAYData: else: pass return ";".join(authors) + + def _get_title(data): + titledata = None + title = "" + if "[ti_long]" in data: + titledata = data.split("[ti_long]")[1].split(")\n")[0].strip() + title = titledata.split("=>")[1].strip().split("/")[0].strip() + if "[ti_long_f]" in data: + titledata = data.split("[ti_long_f]")[1].split(")\n")[0].strip() + title = titledata.split("=>")[1].strip().split("/")[0].strip() + return title return BookData( ppn=_get_line(data, "[kid]"), - title=_get_line(data, "[ti_long]").split("/")[0].strip(), + title=_get_title(data).strip(), author=_get_author(data), edition=_get_list_entry(data, "[ausgabe]", "[0]").replace(",", ""), link=f"https://rds.ibs-bw.de/phfreiburg/link?kid={_get_line(data,'[kid]')}", @@ -403,7 +412,6 @@ class DictToTable: setattr(self, key, None) def transform(self, data: dict): - print(data) mode = data["mode"] self.reset() if mode == "book": @@ -465,4 +473,4 @@ if __name__ == "__main__": ret = RDSData().transform(data) data = ret.return_data("rds_availability") - print(data) + # print(data) diff --git a/src/ui/Ui_semesterapparat_ui.py b/src/ui/Ui_semesterapparat_ui.py index 1912057..8add521 100644 --- a/src/ui/Ui_semesterapparat_ui.py +++ b/src/ui/Ui_semesterapparat_ui.py @@ -230,7 +230,7 @@ class Ui_MainWindow(object): self.dokument_list.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOff) self.dokument_list.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.SizeAdjustPolicy.AdjustToContents) self.dokument_list.setDragEnabled(True) - self.dokument_list.setDragDropMode(QtWidgets.QAbstractItemView.DragDropMode.DropOnly) + self.dokument_list.setDragDropMode(QtWidgets.QAbstractItemView.DragDropMode.DragOnly) self.dokument_list.setDefaultDropAction(QtCore.Qt.DropAction.LinkAction) self.dokument_list.setSelectionMode(QtWidgets.QAbstractItemView.SelectionMode.SingleSelection) self.dokument_list.setObjectName("dokument_list") @@ -590,535 +590,28 @@ class Ui_MainWindow(object): self.search_statistics = QtWidgets.QWidget() self.search_statistics.setObjectName("search_statistics") self.tabWidget.addTab(self.search_statistics, "") - self.elsa = QtWidgets.QWidget() - self.elsa.setObjectName("elsa") - self.create_frame_elsa = QtWidgets.QFrame(parent=self.elsa) - self.create_frame_elsa.setEnabled(True) - self.create_frame_elsa.setGeometry(QtCore.QRect(20, 200, 1231, 201)) - self.create_frame_elsa.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel) - self.create_frame_elsa.setFrameShadow(QtWidgets.QFrame.Shadow.Raised) - self.create_frame_elsa.setObjectName("create_frame_elsa") - self.elsa_save = QtWidgets.QPushButton(parent=self.create_frame_elsa) - self.elsa_save.setGeometry(QtCore.QRect(10, 160, 75, 24)) - self.elsa_save.setObjectName("elsa_save") - self.dokument_list_elsa = QtWidgets.QTableWidget(parent=self.create_frame_elsa) - self.dokument_list_elsa.setGeometry(QtCore.QRect(720, 10, 321, 181)) - font = QtGui.QFont() - font.setPointSize(10) - font.setBold(False) - font.setKerning(False) - self.dokument_list_elsa.setFont(font) - self.dokument_list_elsa.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) - self.dokument_list_elsa.setAcceptDrops(True) - self.dokument_list_elsa.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOff) - self.dokument_list_elsa.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.SizeAdjustPolicy.AdjustToContents) - self.dokument_list_elsa.setDragEnabled(True) - self.dokument_list_elsa.setDragDropMode(QtWidgets.QAbstractItemView.DragDropMode.DropOnly) - self.dokument_list_elsa.setDefaultDropAction(QtCore.Qt.DropAction.LinkAction) - self.dokument_list_elsa.setSelectionMode(QtWidgets.QAbstractItemView.SelectionMode.SingleSelection) - self.dokument_list_elsa.setObjectName("dokument_list_elsa") - self.dokument_list_elsa.setColumnCount(4) - self.dokument_list_elsa.setRowCount(0) - item = QtWidgets.QTableWidgetItem() - font = QtGui.QFont() - font.setFamily("Arial") - font.setPointSize(8) - item.setFont(font) - self.dokument_list_elsa.setHorizontalHeaderItem(0, item) - item = QtWidgets.QTableWidgetItem() - font = QtGui.QFont() - font.setFamily("Arial") - font.setPointSize(8) - item.setFont(font) - self.dokument_list_elsa.setHorizontalHeaderItem(1, item) - item = QtWidgets.QTableWidgetItem() - font = QtGui.QFont() - font.setFamily("Arial") - font.setPointSize(8) - item.setFont(font) - self.dokument_list_elsa.setHorizontalHeaderItem(2, item) - item = QtWidgets.QTableWidgetItem() - self.dokument_list_elsa.setHorizontalHeaderItem(3, item) - self.dokument_list_elsa.horizontalHeader().setDefaultSectionSize(107) - self.dokument_list_elsa.horizontalHeader().setMinimumSectionSize(41) - self.dokument_list_elsa.verticalHeader().setDefaultSectionSize(30) - self.check_file_elsa = QtWidgets.QPushButton(parent=self.create_frame_elsa) - self.check_file_elsa.setEnabled(True) - self.check_file_elsa.setGeometry(QtCore.QRect(1060, 120, 131, 51)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - self.check_file_elsa.setFont(font) - self.check_file_elsa.setObjectName("check_file_elsa") - self.btn_open_document_elsa = QtWidgets.QPushButton(parent=self.create_frame_elsa) - self.btn_open_document_elsa.setGeometry(QtCore.QRect(1060, 80, 131, 25)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - self.btn_open_document_elsa.setFont(font) - self.btn_open_document_elsa.setObjectName("btn_open_document_elsa") - self.btn_add_document_elsa = QtWidgets.QPushButton(parent=self.create_frame_elsa) - self.btn_add_document_elsa.setGeometry(QtCore.QRect(1060, 40, 131, 25)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - self.btn_add_document_elsa.setFont(font) - self.btn_add_document_elsa.setObjectName("btn_add_document_elsa") - self.gridLayoutWidget_6 = QtWidgets.QWidget(parent=self.create_frame_elsa) - self.gridLayoutWidget_6.setGeometry(QtCore.QRect(10, 10, 411, 121)) - self.gridLayoutWidget_6.setObjectName("gridLayoutWidget_6") - self.gridLayout_7 = QtWidgets.QGridLayout(self.gridLayoutWidget_6) - self.gridLayout_7.setSizeConstraint(QtWidgets.QLayout.SizeConstraint.SetFixedSize) - self.gridLayout_7.setContentsMargins(0, 0, 0, 0) - self.gridLayout_7.setObjectName("gridLayout_7") - self.elsa_date_today = QtWidgets.QPushButton(parent=self.gridLayoutWidget_6) - self.elsa_date_today.setText("") - self.elsa_date_today.setFlat(True) - self.elsa_date_today.setObjectName("elsa_date_today") - self.gridLayout_7.addWidget(self.elsa_date_today, 1, 2, 1, 1) - self.label_29 = QtWidgets.QLabel(parent=self.gridLayoutWidget_6) - self.label_29.setObjectName("label_29") - self.gridLayout_7.addWidget(self.label_29, 2, 0, 1, 1) - spacerItem7 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding) - self.gridLayout_7.addItem(spacerItem7, 3, 0, 1, 1) - self.elsa_date = QtWidgets.QLineEdit(parent=self.gridLayoutWidget_6) - self.elsa_date.setClearButtonEnabled(True) - self.elsa_date.setObjectName("elsa_date") - self.gridLayout_7.addWidget(self.elsa_date, 1, 1, 1, 1) - self.active_semester = QtWidgets.QPushButton(parent=self.gridLayoutWidget_6) - self.active_semester.setEnabled(True) - self.active_semester.setText("") - self.active_semester.setIconSize(QtCore.QSize(20, 16)) - self.active_semester.setFlat(True) - self.active_semester.setObjectName("active_semester") - self.gridLayout_7.addWidget(self.active_semester, 2, 2, 1, 1) - self.label_27 = QtWidgets.QLabel(parent=self.gridLayoutWidget_6) - self.label_27.setObjectName("label_27") - self.gridLayout_7.addWidget(self.label_27, 0, 0, 1, 1) - self.elsa_prof = QtWidgets.QComboBox(parent=self.gridLayoutWidget_6) - self.elsa_prof.setEditable(True) - self.elsa_prof.setObjectName("elsa_prof") - self.gridLayout_7.addWidget(self.elsa_prof, 0, 1, 1, 1) - self.label_28 = QtWidgets.QLabel(parent=self.gridLayoutWidget_6) - self.label_28.setObjectName("label_28") - self.gridLayout_7.addWidget(self.label_28, 1, 0, 1, 1) - self.elsa_semester = QtWidgets.QLineEdit(parent=self.gridLayoutWidget_6) - self.elsa_semester.setClearButtonEnabled(True) - self.elsa_semester.setObjectName("elsa_semester") - self.gridLayout_7.addWidget(self.elsa_semester, 2, 1, 1, 1) - self.elsa_update = QtWidgets.QPushButton(parent=self.create_frame_elsa) - self.elsa_update.setGeometry(QtCore.QRect(100, 160, 75, 24)) - self.elsa_update.setObjectName("elsa_update") - self.table_elsa_list = QtWidgets.QTableWidget(parent=self.elsa) - self.table_elsa_list.setGeometry(QtCore.QRect(20, 430, 771, 281)) - self.table_elsa_list.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel) - self.table_elsa_list.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken) - self.table_elsa_list.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers) - self.table_elsa_list.setObjectName("table_elsa_list") - self.table_elsa_list.setColumnCount(12) - self.table_elsa_list.setRowCount(0) - item = QtWidgets.QTableWidgetItem() - self.table_elsa_list.setHorizontalHeaderItem(0, item) - item = QtWidgets.QTableWidgetItem() - self.table_elsa_list.setHorizontalHeaderItem(1, item) - item = QtWidgets.QTableWidgetItem() - self.table_elsa_list.setHorizontalHeaderItem(2, item) - item = QtWidgets.QTableWidgetItem() - self.table_elsa_list.setHorizontalHeaderItem(3, item) - item = QtWidgets.QTableWidgetItem() - self.table_elsa_list.setHorizontalHeaderItem(4, item) - item = QtWidgets.QTableWidgetItem() - self.table_elsa_list.setHorizontalHeaderItem(5, item) - item = QtWidgets.QTableWidgetItem() - self.table_elsa_list.setHorizontalHeaderItem(6, item) - item = QtWidgets.QTableWidgetItem() - self.table_elsa_list.setHorizontalHeaderItem(7, item) - item = QtWidgets.QTableWidgetItem() - self.table_elsa_list.setHorizontalHeaderItem(8, item) - item = QtWidgets.QTableWidgetItem() - self.table_elsa_list.setHorizontalHeaderItem(9, item) - item = QtWidgets.QTableWidgetItem() - self.table_elsa_list.setHorizontalHeaderItem(10, item) - item = QtWidgets.QTableWidgetItem() - self.table_elsa_list.setHorizontalHeaderItem(11, item) - self.table_elsa_list.horizontalHeader().setVisible(True) - self.table_elsa_list.horizontalHeader().setDefaultSectionSize(64) - self.table_elsa_list.horizontalHeader().setStretchLastSection(False) - self.table_elsa_list.verticalHeader().setVisible(True) - self.elsa_statistic_frame = QtWidgets.QFrame(parent=self.elsa) - self.elsa_statistic_frame.setGeometry(QtCore.QRect(800, 410, 451, 321)) - self.elsa_statistic_frame.setObjectName("elsa_statistic_frame") - self.elsa_statistics = QtWidgets.QTabWidget(parent=self.elsa_statistic_frame) - self.elsa_statistics.setGeometry(QtCore.QRect(0, 0, 451, 301)) - self.elsa_statistics.setObjectName("elsa_statistics") - self.tab_9 = QtWidgets.QWidget() - self.tab_9.setObjectName("tab_9") - self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.tab_9) - self.horizontalLayout_3.setObjectName("horizontalLayout_3") - self.elsa_statistics_table = QtWidgets.QTableWidget(parent=self.tab_9) - self.elsa_statistics_table.setFocusPolicy(QtCore.Qt.FocusPolicy.WheelFocus) - self.elsa_statistics_table.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOff) - self.elsa_statistics_table.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers) - self.elsa_statistics_table.setTextElideMode(QtCore.Qt.TextElideMode.ElideRight) - self.elsa_statistics_table.setObjectName("elsa_statistics_table") - self.elsa_statistics_table.setColumnCount(2) - self.elsa_statistics_table.setRowCount(0) - item = QtWidgets.QTableWidgetItem() - self.elsa_statistics_table.setHorizontalHeaderItem(0, item) - item = QtWidgets.QTableWidgetItem() - self.elsa_statistics_table.setHorizontalHeaderItem(1, item) - self.elsa_statistics_table.horizontalHeader().setDefaultSectionSize(220) - self.elsa_statistics_table.horizontalHeader().setSortIndicatorShown(True) - self.horizontalLayout_3.addWidget(self.elsa_statistics_table) - self.elsa_statistics.addTab(self.tab_9, "") - self.elsa_cancel_create = QtWidgets.QPushButton(parent=self.elsa) - self.elsa_cancel_create.setEnabled(False) - self.elsa_cancel_create.setGeometry(QtCore.QRect(30, 90, 91, 24)) - self.elsa_cancel_create.setObjectName("elsa_cancel_create") - self.elsa_add_new = QtWidgets.QPushButton(parent=self.elsa) - self.elsa_add_new.setGeometry(QtCore.QRect(30, 50, 91, 24)) - self.elsa_add_new.setObjectName("elsa_add_new") - self.elsa_table = QtWidgets.QTableWidget(parent=self.elsa) - self.elsa_table.setGeometry(QtCore.QRect(140, 10, 1111, 181)) - self.elsa_table.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOff) - self.elsa_table.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers) - self.elsa_table.setObjectName("elsa_table") - self.elsa_table.setColumnCount(3) - self.elsa_table.setRowCount(0) - item = QtWidgets.QTableWidgetItem() - self.elsa_table.setHorizontalHeaderItem(0, item) - item = QtWidgets.QTableWidgetItem() - self.elsa_table.setHorizontalHeaderItem(1, item) - item = QtWidgets.QTableWidgetItem() - self.elsa_table.setHorizontalHeaderItem(2, item) - self.elsa_table.horizontalHeader().setCascadingSectionResizes(False) - self.elsa_table.horizontalHeader().setDefaultSectionSize(370) - self.quote_entry = QtWidgets.QPushButton(parent=self.elsa) - self.quote_entry.setGeometry(QtCore.QRect(20, 400, 121, 24)) - self.quote_entry.setObjectName("quote_entry") - self.tabWidget.addTab(self.elsa, "") + self.elsatab = QtWidgets.QWidget() + self.elsatab.setObjectName("elsatab") + self.tabWidget.addTab(self.elsatab, "") self.admin = QtWidgets.QWidget() self.admin.setObjectName("admin") self.label_21 = QtWidgets.QLabel(parent=self.admin) self.label_21.setGeometry(QtCore.QRect(10, 30, 47, 22)) self.label_21.setObjectName("label_21") self.select_action_box = QtWidgets.QComboBox(parent=self.admin) - self.select_action_box.setGeometry(QtCore.QRect(70, 30, 181, 22)) + self.select_action_box.setGeometry(QtCore.QRect(60, 30, 181, 22)) self.select_action_box.setObjectName("select_action_box") self.select_action_box.addItem("") self.select_action_box.addItem("") self.select_action_box.addItem("") - self.select_action_box.addItem("") - self.deleteUserBox = QtWidgets.QGroupBox(parent=self.admin) - self.deleteUserBox.setGeometry(QtCore.QRect(10, 60, 370, 92)) - font = QtGui.QFont() - font.setBold(True) - self.deleteUserBox.setFont(font) - self.deleteUserBox.setObjectName("deleteUserBox") - self.gridLayout_9 = QtWidgets.QGridLayout(self.deleteUserBox) - self.gridLayout_9.setObjectName("gridLayout_9") - self.gridLayout_8 = QtWidgets.QGridLayout() - self.gridLayout_8.setObjectName("gridLayout_8") - self.horizontalLayout_8 = QtWidgets.QHBoxLayout() - self.horizontalLayout_8.setObjectName("horizontalLayout_8") - spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) - self.horizontalLayout_8.addItem(spacerItem8) - self.btn_delete_user = QtWidgets.QPushButton(parent=self.deleteUserBox) + self.admin_action = QtWidgets.QGroupBox(parent=self.admin) + self.admin_action.setGeometry(QtCore.QRect(10, 70, 570, 291)) font = QtGui.QFont() font.setBold(False) - self.btn_delete_user.setFont(font) - self.btn_delete_user.setObjectName("btn_delete_user") - self.horizontalLayout_8.addWidget(self.btn_delete_user) - spacerItem9 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) - self.horizontalLayout_8.addItem(spacerItem9) - self.gridLayout_8.addLayout(self.horizontalLayout_8, 1, 1, 1, 1) - self.label_34 = QtWidgets.QLabel(parent=self.deleteUserBox) - font = QtGui.QFont() - font.setBold(False) - self.label_34.setFont(font) - self.label_34.setObjectName("label_34") - self.gridLayout_8.addWidget(self.label_34, 0, 0, 1, 1) - self.user_delete_frame_user_select = QtWidgets.QComboBox(parent=self.deleteUserBox) - font = QtGui.QFont() - font.setBold(False) - self.user_delete_frame_user_select.setFont(font) - self.user_delete_frame_user_select.setObjectName("user_delete_frame_user_select") - self.gridLayout_8.addWidget(self.user_delete_frame_user_select, 0, 1, 1, 1) - self.user_delete_confirm = QtWidgets.QRadioButton(parent=self.deleteUserBox) - font = QtGui.QFont() - font.setBold(False) - self.user_delete_confirm.setFont(font) - self.user_delete_confirm.setLayoutDirection(QtCore.Qt.LayoutDirection.RightToLeft) - self.user_delete_confirm.setObjectName("user_delete_confirm") - self.gridLayout_8.addWidget(self.user_delete_confirm, 1, 0, 1, 1) - spacerItem10 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) - self.gridLayout_8.addItem(spacerItem10, 0, 2, 1, 1) - self.user_delete_err_message = QtWidgets.QLabel(parent=self.deleteUserBox) - self.user_delete_err_message.setText("") - self.user_delete_err_message.setObjectName("user_delete_err_message") - self.gridLayout_8.addWidget(self.user_delete_err_message, 1, 2, 1, 1) - self.gridLayout_9.addLayout(self.gridLayout_8, 0, 0, 1, 1) - self.userCreateBox = QtWidgets.QGroupBox(parent=self.admin) - self.userCreateBox.setGeometry(QtCore.QRect(10, 60, 385, 90)) - font = QtGui.QFont() - font.setBold(True) - self.userCreateBox.setFont(font) - self.userCreateBox.setObjectName("userCreateBox") - self.gridLayout_10 = QtWidgets.QGridLayout(self.userCreateBox) - self.gridLayout_10.setObjectName("gridLayout_10") - self.gridLayout_5 = QtWidgets.QGridLayout() - self.gridLayout_5.setObjectName("gridLayout_5") - self.label_22 = QtWidgets.QLabel(parent=self.userCreateBox) - font = QtGui.QFont() - font.setBold(False) - self.label_22.setFont(font) - self.label_22.setObjectName("label_22") - self.gridLayout_5.addWidget(self.label_22, 0, 0, 1, 1) - self.user_create_frame_username = QtWidgets.QLineEdit(parent=self.userCreateBox) - self.user_create_frame_username.setMaximumSize(QtCore.QSize(150, 16777215)) - font = QtGui.QFont() - font.setBold(False) - self.user_create_frame_username.setFont(font) - self.user_create_frame_username.setObjectName("user_create_frame_username") - self.gridLayout_5.addWidget(self.user_create_frame_username, 0, 1, 1, 1) - self.label_24 = QtWidgets.QLabel(parent=self.userCreateBox) - font = QtGui.QFont() - font.setBold(False) - self.label_24.setFont(font) - self.label_24.setObjectName("label_24") - self.gridLayout_5.addWidget(self.label_24, 0, 2, 1, 1) - self.label_23 = QtWidgets.QLabel(parent=self.userCreateBox) - font = QtGui.QFont() - font.setBold(False) - self.label_23.setFont(font) - self.label_23.setObjectName("label_23") - self.gridLayout_5.addWidget(self.label_23, 1, 0, 1, 1) - spacerItem11 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) - self.gridLayout_5.addItem(spacerItem11, 0, 4, 1, 1) - self.user_frame_userrole = QtWidgets.QComboBox(parent=self.userCreateBox) - font = QtGui.QFont() - font.setBold(False) - self.user_frame_userrole.setFont(font) - self.user_frame_userrole.setEditable(True) - self.user_frame_userrole.setObjectName("user_frame_userrole") - self.gridLayout_5.addWidget(self.user_frame_userrole, 0, 3, 1, 1) - self.user_create_frame_password = QtWidgets.QLineEdit(parent=self.userCreateBox) - self.user_create_frame_password.setMaximumSize(QtCore.QSize(150, 16777215)) - font = QtGui.QFont() - font.setBold(False) - self.user_create_frame_password.setFont(font) - self.user_create_frame_password.setObjectName("user_create_frame_password") - self.gridLayout_5.addWidget(self.user_create_frame_password, 1, 1, 1, 1) - self.user_frame_addUser = QtWidgets.QPushButton(parent=self.userCreateBox) - font = QtGui.QFont() - font.setBold(False) - self.user_frame_addUser.setFont(font) - self.user_frame_addUser.setObjectName("user_frame_addUser") - self.gridLayout_5.addWidget(self.user_frame_addUser, 1, 3, 1, 1) - self.user_frame_err_message = QtWidgets.QLabel(parent=self.userCreateBox) - self.user_frame_err_message.setText("") - self.user_frame_err_message.setObjectName("user_frame_err_message") - self.gridLayout_5.addWidget(self.user_frame_err_message, 1, 4, 1, 1) - self.gridLayout_10.addLayout(self.gridLayout_5, 0, 0, 1, 1) - self.userChangeDataBox = QtWidgets.QGroupBox(parent=self.admin) - self.userChangeDataBox.setGeometry(QtCore.QRect(10, 60, 404, 90)) - font = QtGui.QFont() - font.setBold(True) - self.userChangeDataBox.setFont(font) - self.userChangeDataBox.setObjectName("userChangeDataBox") - self.gridLayout_13 = QtWidgets.QGridLayout(self.userChangeDataBox) - self.gridLayout_13.setObjectName("gridLayout_13") - self.gridLayout_11 = QtWidgets.QGridLayout() - self.gridLayout_11.setObjectName("gridLayout_11") - self.user_edit_frame_role_select = QtWidgets.QComboBox(parent=self.userChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.user_edit_frame_role_select.setFont(font) - self.user_edit_frame_role_select.setObjectName("user_edit_frame_role_select") - self.gridLayout_11.addWidget(self.user_edit_frame_role_select, 0, 3, 1, 1) - self.label_38 = QtWidgets.QLabel(parent=self.userChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.label_38.setFont(font) - self.label_38.setObjectName("label_38") - self.gridLayout_11.addWidget(self.label_38, 0, 0, 1, 1) - self.user_edit_frame_user_select = QtWidgets.QComboBox(parent=self.userChangeDataBox) - self.user_edit_frame_user_select.setMaximumSize(QtCore.QSize(150, 16777215)) - font = QtGui.QFont() - font.setBold(False) - self.user_edit_frame_user_select.setFont(font) - self.user_edit_frame_user_select.setObjectName("user_edit_frame_user_select") - self.gridLayout_11.addWidget(self.user_edit_frame_user_select, 0, 1, 1, 1) - self.update_user = QtWidgets.QPushButton(parent=self.userChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.update_user.setFont(font) - self.update_user.setObjectName("update_user") - self.gridLayout_11.addWidget(self.update_user, 1, 3, 1, 1) - self.label_40 = QtWidgets.QLabel(parent=self.userChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.label_40.setFont(font) - self.label_40.setObjectName("label_40") - self.gridLayout_11.addWidget(self.label_40, 0, 2, 1, 1) - self.label_39 = QtWidgets.QLabel(parent=self.userChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.label_39.setFont(font) - self.label_39.setObjectName("label_39") - self.gridLayout_11.addWidget(self.label_39, 1, 0, 1, 1) - self.user_edit_frame_new_password = QtWidgets.QLineEdit(parent=self.userChangeDataBox) - self.user_edit_frame_new_password.setMaximumSize(QtCore.QSize(150, 16777215)) - font = QtGui.QFont() - font.setBold(False) - self.user_edit_frame_new_password.setFont(font) - self.user_edit_frame_new_password.setObjectName("user_edit_frame_new_password") - self.gridLayout_11.addWidget(self.user_edit_frame_new_password, 1, 1, 1, 1) - spacerItem12 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) - self.gridLayout_11.addItem(spacerItem12, 0, 4, 1, 1) - self.gridLayout_13.addLayout(self.gridLayout_11, 0, 0, 1, 1) - self.profChangeDataBox = QtWidgets.QGroupBox(parent=self.admin) - self.profChangeDataBox.setGeometry(QtCore.QRect(10, 60, 566, 234)) - font = QtGui.QFont() - font.setBold(True) - self.profChangeDataBox.setFont(font) - self.profChangeDataBox.setObjectName("profChangeDataBox") - self.gridLayout_14 = QtWidgets.QGridLayout(self.profChangeDataBox) - self.gridLayout_14.setObjectName("gridLayout_14") - self.gridLayout_12 = QtWidgets.QGridLayout() - self.gridLayout_12.setObjectName("gridLayout_12") - self.formLayout_2 = QtWidgets.QFormLayout() - self.formLayout_2.setObjectName("formLayout_2") - self.label_43 = QtWidgets.QLabel(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.label_43.setFont(font) - self.label_43.setObjectName("label_43") - self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_43) - self.edit_faculty_member_new_title = QtWidgets.QComboBox(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.edit_faculty_member_new_title.setFont(font) - self.edit_faculty_member_new_title.setEditable(True) - self.edit_faculty_member_new_title.setObjectName("edit_faculty_member_new_title") - self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.edit_faculty_member_new_title) - self.label_44 = QtWidgets.QLabel(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.label_44.setFont(font) - self.label_44.setObjectName("label_44") - self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_44) - self.edit_faculty_member_new_surname = QtWidgets.QLineEdit(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.edit_faculty_member_new_surname.setFont(font) - self.edit_faculty_member_new_surname.setObjectName("edit_faculty_member_new_surname") - self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.edit_faculty_member_new_surname) - self.label_45 = QtWidgets.QLabel(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.label_45.setFont(font) - self.label_45.setObjectName("label_45") - self.formLayout_2.setWidget(2, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_45) - self.user_faculty_member_new_name = QtWidgets.QLineEdit(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.user_faculty_member_new_name.setFont(font) - self.user_faculty_member_new_name.setObjectName("user_faculty_member_new_name") - self.formLayout_2.setWidget(2, QtWidgets.QFormLayout.ItemRole.FieldRole, self.user_faculty_member_new_name) - self.gridLayout_12.addLayout(self.formLayout_2, 2, 2, 1, 1) - self.formLayout_4 = QtWidgets.QFormLayout() - self.formLayout_4.setObjectName("formLayout_4") - self.edit_faculty_member_title = QtWidgets.QLineEdit(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.edit_faculty_member_title.setFont(font) - self.edit_faculty_member_title.setFocusPolicy(QtCore.Qt.FocusPolicy.TabFocus) - self.edit_faculty_member_title.setReadOnly(True) - self.edit_faculty_member_title.setObjectName("edit_faculty_member_title") - self.formLayout_4.setWidget(0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.edit_faculty_member_title) - self.edit_faculty_member_select_member = QtWidgets.QComboBox(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.edit_faculty_member_select_member.setFont(font) - self.edit_faculty_member_select_member.setObjectName("edit_faculty_member_select_member") - self.formLayout_4.setWidget(0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.edit_faculty_member_select_member) - self.label_46 = QtWidgets.QLabel(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.label_46.setFont(font) - self.label_46.setObjectName("label_46") - self.formLayout_4.setWidget(1, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_46) - self.faculty_member_old_telnr = QtWidgets.QLineEdit(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.faculty_member_old_telnr.setFont(font) - self.faculty_member_old_telnr.setFocusPolicy(QtCore.Qt.FocusPolicy.ClickFocus) - self.faculty_member_old_telnr.setReadOnly(True) - self.faculty_member_old_telnr.setObjectName("faculty_member_old_telnr") - self.formLayout_4.setWidget(1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.faculty_member_old_telnr) - self.label_49 = QtWidgets.QLabel(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.label_49.setFont(font) - self.label_49.setObjectName("label_49") - self.formLayout_4.setWidget(2, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_49) - self.faculty_member_oldmail = QtWidgets.QLineEdit(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.faculty_member_oldmail.setFont(font) - self.faculty_member_oldmail.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) - self.faculty_member_oldmail.setInputMethodHints(QtCore.Qt.InputMethodHint.ImhNone) - self.faculty_member_oldmail.setReadOnly(True) - self.faculty_member_oldmail.setObjectName("faculty_member_oldmail") - self.formLayout_4.setWidget(2, QtWidgets.QFormLayout.ItemRole.FieldRole, self.faculty_member_oldmail) - self.gridLayout_12.addLayout(self.formLayout_4, 0, 2, 1, 1) - self.formLayout_5 = QtWidgets.QFormLayout() - self.formLayout_5.setObjectName("formLayout_5") - self.label_47 = QtWidgets.QLabel(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.label_47.setFont(font) - self.label_47.setObjectName("label_47") - self.formLayout_5.setWidget(0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_47) - self.label_48 = QtWidgets.QLabel(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.label_48.setFont(font) - self.label_48.setObjectName("label_48") - self.formLayout_5.setWidget(1, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_48) - self.user_faculty_member_new_mail = QtWidgets.QLineEdit(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.user_faculty_member_new_mail.setFont(font) - self.user_faculty_member_new_mail.setObjectName("user_faculty_member_new_mail") - self.formLayout_5.setWidget(0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.user_faculty_member_new_mail) - self.user_faculty_member_new_telnr = QtWidgets.QLineEdit(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.user_faculty_member_new_telnr.setFont(font) - self.user_faculty_member_new_telnr.setObjectName("user_faculty_member_new_telnr") - self.formLayout_5.setWidget(1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.user_faculty_member_new_telnr) - self.gridLayout_12.addLayout(self.formLayout_5, 2, 4, 1, 1) - self.label_41 = QtWidgets.QLabel(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.label_41.setFont(font) - self.label_41.setObjectName("label_41") - self.gridLayout_12.addWidget(self.label_41, 0, 0, 1, 1) - self.update_faculty_member = QtWidgets.QPushButton(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.update_faculty_member.setFont(font) - self.update_faculty_member.setObjectName("update_faculty_member") - self.gridLayout_12.addWidget(self.update_faculty_member, 3, 4, 1, 1) - self.label_42 = QtWidgets.QLabel(parent=self.profChangeDataBox) - font = QtGui.QFont() - font.setBold(False) - self.label_42.setFont(font) - self.label_42.setObjectName("label_42") - self.gridLayout_12.addWidget(self.label_42, 2, 0, 1, 1) - self.gridLayout_14.addLayout(self.gridLayout_12, 0, 0, 1, 1) + self.admin_action.setFont(font) + self.admin_action.setFlat(True) + self.admin_action.setCheckable(False) + self.admin_action.setObjectName("admin_action") self.tabWidget.addTab(self.admin, "") self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1) self.horizontalLayout.addLayout(self.gridLayout) @@ -1287,22 +780,6 @@ class Ui_MainWindow(object): self.label_4.setBuddy(self.drpdwn_prof_name) self.label_5.setBuddy(self.app_name) self.label_6.setBuddy(self.sem_year) - self.label_29.setBuddy(self.elsa_semester) - self.label_27.setBuddy(self.elsa_prof) - self.label_28.setBuddy(self.elsa_date) - self.label_34.setBuddy(self.user_delete_frame_user_select) - self.label_22.setBuddy(self.user_create_frame_username) - self.label_24.setBuddy(self.user_frame_userrole) - self.label_23.setBuddy(self.user_create_frame_password) - self.label_38.setBuddy(self.user_edit_frame_user_select) - self.label_40.setBuddy(self.user_edit_frame_role_select) - self.label_39.setBuddy(self.user_edit_frame_new_password) - self.label_43.setBuddy(self.edit_faculty_member_new_title) - self.label_44.setBuddy(self.edit_faculty_member_new_surname) - self.label_45.setBuddy(self.user_faculty_member_new_name) - self.label_46.setBuddy(self.faculty_member_old_telnr) - self.label_47.setBuddy(self.user_faculty_member_new_mail) - self.label_48.setBuddy(self.user_faculty_member_new_telnr) self.retranslateUi(MainWindow) self.tabWidget.setCurrentIndex(0) @@ -1312,9 +789,9 @@ class Ui_MainWindow(object): MainWindow.setTabOrder(self.prof_mail, self.prof_tel_nr) MainWindow.setTabOrder(self.prof_tel_nr, self.app_name) MainWindow.setTabOrder(self.app_name, self.app_fach) - MainWindow.setTabOrder(self.app_fach, self.sem_winter) - MainWindow.setTabOrder(self.sem_winter, self.sem_sommer) - MainWindow.setTabOrder(self.sem_sommer, self.sem_year) + MainWindow.setTabOrder(self.app_fach, self.sem_sommer) + MainWindow.setTabOrder(self.sem_sommer, self.sem_winter) + MainWindow.setTabOrder(self.sem_winter, self.sem_year) MainWindow.setTabOrder(self.sem_year, self.check_eternal_app) MainWindow.setTabOrder(self.check_eternal_app, self.btn_add_document) MainWindow.setTabOrder(self.btn_add_document, self.btn_open_document) @@ -1322,48 +799,12 @@ class Ui_MainWindow(object): MainWindow.setTabOrder(self.check_file, self.check_send_mail) MainWindow.setTabOrder(self.check_send_mail, self.btn_apparat_save) MainWindow.setTabOrder(self.btn_apparat_save, self.btn_apparat_apply) - MainWindow.setTabOrder(self.btn_apparat_apply, self.user_faculty_member_new_name) - MainWindow.setTabOrder(self.user_faculty_member_new_name, self.user_faculty_member_new_mail) - MainWindow.setTabOrder(self.user_faculty_member_new_mail, self.user_faculty_member_new_telnr) - MainWindow.setTabOrder(self.user_faculty_member_new_telnr, self.update_faculty_member) - MainWindow.setTabOrder(self.update_faculty_member, self.btn_copy_adis_command) + MainWindow.setTabOrder(self.btn_apparat_apply, self.btn_copy_adis_command) MainWindow.setTabOrder(self.btn_copy_adis_command, self.chkbx_show_del_media) MainWindow.setTabOrder(self.chkbx_show_del_media, self.btn_reserve) - MainWindow.setTabOrder(self.btn_reserve, self.edit_faculty_member_select_member) - MainWindow.setTabOrder(self.edit_faculty_member_select_member, self.user_frame_addUser) - MainWindow.setTabOrder(self.user_frame_addUser, self.user_edit_frame_user_select) - MainWindow.setTabOrder(self.user_edit_frame_user_select, self.select_action_box) - MainWindow.setTabOrder(self.select_action_box, self.user_edit_frame_new_password) - MainWindow.setTabOrder(self.user_edit_frame_new_password, self.user_frame_userrole) - MainWindow.setTabOrder(self.user_frame_userrole, self.user_delete_frame_user_select) - MainWindow.setTabOrder(self.user_delete_frame_user_select, self.user_edit_frame_role_select) - MainWindow.setTabOrder(self.user_edit_frame_role_select, self.prof_id_adis) + MainWindow.setTabOrder(self.btn_reserve, self.select_action_box) + MainWindow.setTabOrder(self.select_action_box, self.prof_id_adis) MainWindow.setTabOrder(self.prof_id_adis, self.apparat_id_adis) - MainWindow.setTabOrder(self.apparat_id_adis, self.user_create_frame_username) - MainWindow.setTabOrder(self.user_create_frame_username, self.user_delete_confirm) - MainWindow.setTabOrder(self.user_delete_confirm, self.btn_delete_user) - MainWindow.setTabOrder(self.btn_delete_user, self.update_user) - MainWindow.setTabOrder(self.update_user, self.user_create_frame_password) - MainWindow.setTabOrder(self.user_create_frame_password, self.edit_faculty_member_title) - MainWindow.setTabOrder(self.edit_faculty_member_title, self.elsa_save) - MainWindow.setTabOrder(self.elsa_save, self.check_file_elsa) - MainWindow.setTabOrder(self.check_file_elsa, self.btn_open_document_elsa) - MainWindow.setTabOrder(self.btn_open_document_elsa, self.btn_add_document_elsa) - MainWindow.setTabOrder(self.btn_add_document_elsa, self.elsa_date_today) - MainWindow.setTabOrder(self.elsa_date_today, self.elsa_date) - MainWindow.setTabOrder(self.elsa_date, self.active_semester) - MainWindow.setTabOrder(self.active_semester, self.elsa_prof) - MainWindow.setTabOrder(self.elsa_prof, self.elsa_semester) - MainWindow.setTabOrder(self.elsa_semester, self.table_elsa_list) - MainWindow.setTabOrder(self.table_elsa_list, self.elsa_statistics) - MainWindow.setTabOrder(self.elsa_statistics, self.elsa_statistics_table) - MainWindow.setTabOrder(self.elsa_statistics_table, self.elsa_cancel_create) - MainWindow.setTabOrder(self.elsa_cancel_create, self.elsa_add_new) - MainWindow.setTabOrder(self.elsa_add_new, self.elsa_table) - MainWindow.setTabOrder(self.elsa_table, self.edit_faculty_member_new_surname) - MainWindow.setTabOrder(self.edit_faculty_member_new_surname, self.edit_faculty_member_new_title) - MainWindow.setTabOrder(self.edit_faculty_member_new_title, self.elsa_update) - MainWindow.setTabOrder(self.elsa_update, self.quote_entry) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate @@ -1453,94 +894,12 @@ class Ui_MainWindow(object): self.add_medium.setText(_translate("MainWindow", "Medien hinzufügen")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.createApparat), _translate("MainWindow", "Anlegen")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.search_statistics), _translate("MainWindow", "Suchen / Statistik")) - self.elsa_save.setText(_translate("MainWindow", "Speichern")) - item = self.dokument_list_elsa.horizontalHeaderItem(0) - item.setText(_translate("MainWindow", "Dokumentname")) - item = self.dokument_list_elsa.horizontalHeaderItem(1) - item.setText(_translate("MainWindow", "Dateityp")) - item = self.dokument_list_elsa.horizontalHeaderItem(2) - item.setText(_translate("MainWindow", "Neu?")) - item = self.dokument_list_elsa.horizontalHeaderItem(3) - item.setText(_translate("MainWindow", "path")) - self.check_file_elsa.setToolTip(_translate("MainWindow", "Abhängig von der Anzahl der Medien kann die Suche sehr lange dauern")) - self.check_file_elsa.setText(_translate("MainWindow", "Medien aus Dokument\n" -" hinzufügen")) - self.btn_open_document_elsa.setText(_translate("MainWindow", "Dokument öffnen")) - self.btn_add_document_elsa.setText(_translate("MainWindow", "Dokument hinzufügen")) - self.label_29.setText(_translate("MainWindow", "Semester")) - self.label_27.setText(_translate("MainWindow", "Professor")) - self.elsa_prof.setPlaceholderText(_translate("MainWindow", "Vollständiger Name")) - self.label_28.setText(_translate("MainWindow", "Auftragsdatum")) - self.elsa_update.setText(_translate("MainWindow", "Aktualisieren")) - item = self.table_elsa_list.horizontalHeaderItem(0) - item.setText(_translate("MainWindow", "Autor(en) des Werks")) - item = self.table_elsa_list.horizontalHeaderItem(1) - item.setText(_translate("MainWindow", "Autor(en) des Beitrags")) - item = self.table_elsa_list.horizontalHeaderItem(2) - item.setText(_translate("MainWindow", "Jahr")) - item = self.table_elsa_list.horizontalHeaderItem(3) - item.setText(_translate("MainWindow", "Heft")) - item = self.table_elsa_list.horizontalHeaderItem(4) - item.setText(_translate("MainWindow", "Auflage")) - item = self.table_elsa_list.horizontalHeaderItem(5) - item.setText(_translate("MainWindow", "Titel des Werkes")) - item = self.table_elsa_list.horizontalHeaderItem(6) - item.setText(_translate("MainWindow", "Beitragstitel")) - item = self.table_elsa_list.horizontalHeaderItem(7) - item.setText(_translate("MainWindow", "Seiten")) - item = self.table_elsa_list.horizontalHeaderItem(8) - item.setText(_translate("MainWindow", "Ort")) - item = self.table_elsa_list.horizontalHeaderItem(9) - item.setText(_translate("MainWindow", "Verlag")) - item = self.table_elsa_list.horizontalHeaderItem(10) - item.setText(_translate("MainWindow", "Signatur")) - item = self.table_elsa_list.horizontalHeaderItem(11) - item.setText(_translate("MainWindow", "Art")) - item = self.elsa_statistics_table.horizontalHeaderItem(0) - item.setText(_translate("MainWindow", "Semester")) - item = self.elsa_statistics_table.horizontalHeaderItem(1) - item.setText(_translate("MainWindow", "Zugang")) - self.elsa_statistics.setTabText(self.elsa_statistics.indexOf(self.tab_9), _translate("MainWindow", "Tabelle")) - self.elsa_cancel_create.setText(_translate("MainWindow", "Abbrechen")) - self.elsa_add_new.setText(_translate("MainWindow", "Neuer Auftrag")) - item = self.elsa_table.horizontalHeaderItem(0) - item.setText(_translate("MainWindow", "Professor")) - item = self.elsa_table.horizontalHeaderItem(1) - item.setText(_translate("MainWindow", "Datum")) - item = self.elsa_table.horizontalHeaderItem(2) - item.setText(_translate("MainWindow", "Semester")) - self.quote_entry.setText(_translate("MainWindow", "Eintrag zitieren")) - self.tabWidget.setTabText(self.tabWidget.indexOf(self.elsa), _translate("MainWindow", "ELSA")) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.elsatab), _translate("MainWindow", "ELSA")) self.label_21.setText(_translate("MainWindow", "Aktion:")) self.select_action_box.setItemText(0, _translate("MainWindow", "Nutzer anlegen")) - self.select_action_box.setItemText(1, _translate("MainWindow", "Nutzer löschen")) - self.select_action_box.setItemText(2, _translate("MainWindow", "Nutzer aktualisieren")) - self.select_action_box.setItemText(3, _translate("MainWindow", "Lehrperson bearbeiten")) - self.deleteUserBox.setTitle(_translate("MainWindow", "Nutzer löschen")) - self.btn_delete_user.setText(_translate("MainWindow", "Nutzer löschen")) - self.label_34.setText(_translate("MainWindow", "Nutzername")) - self.user_delete_confirm.setText(_translate("MainWindow", "Wirklich löschen?")) - self.userCreateBox.setTitle(_translate("MainWindow", "Nutzer anlegen")) - self.label_22.setText(_translate("MainWindow", "Nutzername")) - self.label_24.setText(_translate("MainWindow", "Rolle")) - self.label_23.setText(_translate("MainWindow", "Passwort")) - self.user_frame_addUser.setText(_translate("MainWindow", "Anlegen")) - self.userChangeDataBox.setTitle(_translate("MainWindow", "Nutzerdaten anpassen")) - self.label_38.setText(_translate("MainWindow", "Nutzername")) - self.update_user.setText(_translate("MainWindow", "Aktualisieren")) - self.label_40.setText(_translate("MainWindow", "Rolle")) - self.label_39.setText(_translate("MainWindow", "Neues Passwort")) - self.profChangeDataBox.setTitle(_translate("MainWindow", "Lehrperson bearbeiten")) - self.label_43.setText(_translate("MainWindow", "Titel")) - self.label_44.setText(_translate("MainWindow", "Vorname")) - self.label_45.setText(_translate("MainWindow", "Nachname")) - self.label_46.setText(_translate("MainWindow", "Telefonnummer")) - self.label_49.setText(_translate("MainWindow", "Mail")) - self.label_47.setText(_translate("MainWindow", "Mail")) - self.label_48.setText(_translate("MainWindow", "Telefon")) - self.label_41.setText(_translate("MainWindow", "Alte Angaben")) - self.update_faculty_member.setText(_translate("MainWindow", "Aktualisieren")) - self.label_42.setText(_translate("MainWindow", "Neue Angaben")) + self.select_action_box.setItemText(1, _translate("MainWindow", "Nutzer bearbeiten")) + self.select_action_box.setItemText(2, _translate("MainWindow", "Lehrperson bearbeiten")) + self.admin_action.setTitle(_translate("MainWindow", "GroupBox")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.admin), _translate("MainWindow", "Admin")) self.groupBox_2.setTitle(_translate("MainWindow", "Software")) self.appdata_check.setText(_translate("MainWindow", "Apparatsdaten eingegeben")) diff --git a/src/ui/dialogs/dialog_sources/Ui_login.py b/src/ui/dialogs/dialog_sources/Ui_login.py index 397ccd5..b2421eb 100644 --- a/src/ui/dialogs/dialog_sources/Ui_login.py +++ b/src/ui/dialogs/dialog_sources/Ui_login.py @@ -13,6 +13,9 @@ class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(218, 190) + icon = QtGui.QIcon() + icon.addPixmap(QtGui.QPixmap(":/icons/resources/1f510.svg"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off) + Dialog.setWindowIcon(icon) self.label = QtWidgets.QLabel(parent=Dialog) self.label.setGeometry(QtCore.QRect(20, 40, 71, 21)) self.label.setObjectName("label") diff --git a/src/ui/dialogs/dialog_sources/Ui_mail_preview.py b/src/ui/dialogs/dialog_sources/Ui_mail_preview.py index 781a67b..cf6d8f2 100644 --- a/src/ui/dialogs/dialog_sources/Ui_mail_preview.py +++ b/src/ui/dialogs/dialog_sources/Ui_mail_preview.py @@ -13,6 +13,9 @@ class Ui_eMailPreview(object): def setupUi(self, eMailPreview): eMailPreview.setObjectName("eMailPreview") eMailPreview.resize(700, 668) + icon = QtGui.QIcon() + icon.addPixmap(QtGui.QPixmap("c:\\Users\\aky547\\GitHub\\SemesterapparatsManager\\src\\ui\\dialogs\\dialog_sources\\../../../../../../icons/email.svg"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off) + eMailPreview.setWindowIcon(icon) self.gridLayout_2 = QtWidgets.QGridLayout(eMailPreview) self.gridLayout_2.setObjectName("gridLayout_2") self.gridLayout = QtWidgets.QGridLayout() @@ -64,20 +67,11 @@ class Ui_eMailPreview(object): self.gender_non = QtWidgets.QRadioButton(parent=eMailPreview) self.gender_non.setObjectName("gender_non") self.horizontalLayout_3.addWidget(self.gender_non) - spacerItem = QtWidgets.QSpacerItem( - 40, - 20, - QtWidgets.QSizePolicy.Policy.Expanding, - QtWidgets.QSizePolicy.Policy.Minimum, - ) + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) self.horizontalLayout_3.addItem(spacerItem) self.gridLayout.addLayout(self.horizontalLayout_3, 4, 2, 1, 1) self.label_3 = QtWidgets.QLabel(parent=eMailPreview) - self.label_3.setAlignment( - QtCore.Qt.AlignmentFlag.AlignLeading - | QtCore.Qt.AlignmentFlag.AlignLeft - | QtCore.Qt.AlignmentFlag.AlignTop - ) + self.label_3.setAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignTop) self.label_3.setObjectName("label_3") self.gridLayout.addWidget(self.label_3, 5, 0, 1, 1) self.label = QtWidgets.QLabel(parent=eMailPreview) @@ -85,12 +79,7 @@ class Ui_eMailPreview(object): self.gridLayout.addWidget(self.label, 1, 0, 1, 1) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") - spacerItem1 = QtWidgets.QSpacerItem( - 40, - 20, - QtWidgets.QSizePolicy.Policy.Expanding, - QtWidgets.QSizePolicy.Policy.Minimum, - ) + spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) self.horizontalLayout_2.addItem(spacerItem1) self.btn_okay = QtWidgets.QPushButton(parent=eMailPreview) self.btn_okay.setStatusTip("") @@ -98,9 +87,7 @@ class Ui_eMailPreview(object): self.horizontalLayout_2.addWidget(self.btn_okay) self.buttonBox = QtWidgets.QDialogButtonBox(parent=eMailPreview) self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal) - self.buttonBox.setStandardButtons( - QtWidgets.QDialogButtonBox.StandardButton.Cancel - ) + self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.StandardButton.Cancel) self.buttonBox.setCenterButtons(True) self.buttonBox.setObjectName("buttonBox") self.horizontalLayout_2.addWidget(self.buttonBox) @@ -108,8 +95,8 @@ class Ui_eMailPreview(object): self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1) self.retranslateUi(eMailPreview) - self.buttonBox.accepted.connect(eMailPreview.accept) # type: ignore - self.buttonBox.rejected.connect(eMailPreview.reject) # type: ignore + self.buttonBox.accepted.connect(eMailPreview.accept) # type: ignore + self.buttonBox.rejected.connect(eMailPreview.reject) # type: ignore QtCore.QMetaObject.connectSlotsByName(eMailPreview) def retranslateUi(self, eMailPreview): diff --git a/src/ui/dialogs/dialog_sources/Ui_medianadder.py b/src/ui/dialogs/dialog_sources/Ui_medianadder.py index 8d78301..3991c69 100644 --- a/src/ui/dialogs/dialog_sources/Ui_medianadder.py +++ b/src/ui/dialogs/dialog_sources/Ui_medianadder.py @@ -13,6 +13,9 @@ class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(620, 481) + icon = QtGui.QIcon() + icon.addPixmap(QtGui.QPixmap(":/icons/resources/2795.svg"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off) + Dialog.setWindowIcon(icon) self.label = QtWidgets.QLabel(parent=Dialog) self.label.setGeometry(QtCore.QRect(20, 10, 47, 21)) self.label.setObjectName("label") diff --git a/src/ui/dialogs/mailTemplate.py b/src/ui/dialogs/mailTemplate.py index a3cf2ad..d075fb6 100644 --- a/src/ui/dialogs/mailTemplate.py +++ b/src/ui/dialogs/mailTemplate.py @@ -39,7 +39,7 @@ class MailTemplateDialog(QtWidgets.QDialog, NewMailTemplateDesignerDialog): ).clicked.connect(self.closeNow) def save_template(self): - print("save triggered") + # print("save triggered") # create a dialog to ask for the name of the template dialog = QtWidgets.QInputDialog() dialog.setInputMode(QtWidgets.QInputDialog.InputMode.TextInput) @@ -128,8 +128,8 @@ Content-Transfer-Encoding: 8bit self.close() def updateDescription(self): - print("update triggered") - print(self.placeholder_list.currentText()) + # print("update triggered") + # print(self.placeholder_list.currentText()) placeholders = { "anrede": "Die Anrede beinhaltet sowohl Person als auch Sehr geehrte/r; dargestellt als: {greeting}", "apparatsfach": "Das Fach, in welchem der Apparat angelegt wurde; dargestellt als: {AppSubject}", diff --git a/src/ui/semesterapparat_ui.ui b/src/ui/semesterapparat_ui.ui index f7db1e4..010b468 100644 --- a/src/ui/semesterapparat_ui.ui +++ b/src/ui/semesterapparat_ui.ui @@ -538,7 +538,7 @@ true - QAbstractItemView::DropOnly + QAbstractItemView::DragOnly Qt::LinkAction @@ -1503,547 +1503,10 @@ Suchen / Statistik - + ELSA - - - true - - - - 20 - 200 - 1231 - 201 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 10 - 160 - 75 - 24 - - - - Speichern - - - - - - 720 - 10 - 321 - 181 - - - - - 10 - false - false - - - - Qt::NoFocus - - - true - - - Qt::ScrollBarAlwaysOff - - - QAbstractScrollArea::AdjustToContents - - - true - - - QAbstractItemView::DropOnly - - - Qt::LinkAction - - - QAbstractItemView::SingleSelection - - - 41 - - - 107 - - - 30 - - - - Dokumentname - - - - Arial - 8 - - - - - - Dateityp - - - - Arial - 8 - - - - - - Neu? - - - - Arial - 8 - - - - - - path - - - - - - true - - - - 1060 - 120 - 131 - 51 - - - - - 9 - false - - - - Abhängig von der Anzahl der Medien kann die Suche sehr lange dauern - - - Medien aus Dokument - hinzufügen - - - - - - 1060 - 80 - 131 - 25 - - - - - 9 - false - - - - Dokument öffnen - - - - - - 1060 - 40 - 131 - 25 - - - - - 9 - false - - - - Dokument hinzufügen - - - - - - 10 - 10 - 411 - 121 - - - - - QLayout::SetFixedSize - - - - - - - - true - - - - - - - Semester - - - elsa_semester - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - true - - - - - - - true - - - - - - - 20 - 16 - - - - true - - - - - - - Professor - - - elsa_prof - - - - - - - true - - - Vollständiger Name - - - - - - - Auftragsdatum - - - elsa_date - - - - - - - true - - - - - - - - - 100 - 160 - 75 - 24 - - - - Aktualisieren - - - - - - - 20 - 430 - 771 - 281 - - - - QFrame::StyledPanel - - - QFrame::Sunken - - - QAbstractItemView::NoEditTriggers - - - true - - - 64 - - - false - - - true - - - - Autor(en) des Werks - - - - - Autor(en) des Beitrags - - - - - Jahr - - - - - Heft - - - - - Auflage - - - - - Titel des Werkes - - - - - Beitragstitel - - - - - Seiten - - - - - Ort - - - - - Verlag - - - - - Signatur - - - - - Art - - - - - - - 800 - 410 - 451 - 321 - - - - - - 0 - 0 - 451 - 301 - - - - - Tabelle - - - - - - Qt::WheelFocus - - - Qt::ScrollBarAlwaysOff - - - QAbstractItemView::NoEditTriggers - - - Qt::ElideRight - - - 220 - - - true - - - - Semester - - - - - Zugang - - - - - - - - - - - false - - - - 30 - 90 - 91 - 24 - - - - Abbrechen - - - - - - 30 - 50 - 91 - 24 - - - - Neuer Auftrag - - - - - - 140 - 10 - 1111 - 181 - - - - Qt::ScrollBarAlwaysOff - - - QAbstractItemView::NoEditTriggers - - - false - - - 370 - - - - Professor - - - - - Datum - - - - - Semester - - - - - - - 20 - 400 - 121 - 24 - - - - Eintrag zitieren - - @@ -2065,7 +1528,7 @@ - 70 + 60 30 181 22 @@ -2078,12 +1541,7 @@ - Nutzer löschen - - - - - Nutzer aktualisieren + Nutzer bearbeiten @@ -2092,685 +1550,29 @@ - + 10 - 60 - 370 - 92 + 70 + 570 + 291 - true + false - Nutzer löschen + GroupBox - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - false - - - - Nutzer löschen - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - false - - - - Nutzername - - - user_delete_frame_user_select - - - - - - - - false - - - - - - - - - false - - - - Qt::RightToLeft - - - Wirklich löschen? - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - - - - - 10 - 60 - 385 - 90 - + + true - - - true - + + false - - Nutzer anlegen - - - - - - - - - false - - - - Nutzername - - - user_create_frame_username - - - - - - - - 150 - 16777215 - - - - - false - - - - - - - - - false - - - - Rolle - - - user_frame_userrole - - - - - - - - false - - - - Passwort - - - user_create_frame_password - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - false - - - - true - - - - - - - - 150 - 16777215 - - - - - false - - - - - - - - - false - - - - Anlegen - - - - - - - - - - - - - - - - - - 10 - 60 - 404 - 90 - - - - - true - - - - Nutzerdaten anpassen - - - - - - - - - false - - - - - - - - - false - - - - Nutzername - - - user_edit_frame_user_select - - - - - - - - 150 - 16777215 - - - - - false - - - - - - - - - false - - - - Aktualisieren - - - - - - - - false - - - - Rolle - - - user_edit_frame_role_select - - - - - - - - false - - - - Neues Passwort - - - user_edit_frame_new_password - - - - - - - - 150 - 16777215 - - - - - false - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - 10 - 60 - 566 - 234 - - - - - true - - - - Lehrperson bearbeiten - - - - - - - - - - - false - - - - Titel - - - edit_faculty_member_new_title - - - - - - - - false - - - - true - - - - - - - - false - - - - Vorname - - - edit_faculty_member_new_surname - - - - - - - - false - - - - - - - - - false - - - - Nachname - - - user_faculty_member_new_name - - - - - - - - false - - - - - - - - - - - - - false - - - - Qt::TabFocus - - - true - - - - - - - - false - - - - - - - - - false - - - - Telefonnummer - - - faculty_member_old_telnr - - - - - - - - false - - - - Qt::ClickFocus - - - true - - - - - - - - false - - - - Mail - - - - - - - - false - - - - Qt::NoFocus - - - Qt::ImhNone - - - true - - - - - - - - - - - - false - - - - Mail - - - user_faculty_member_new_mail - - - - - - - - false - - - - Telefon - - - user_faculty_member_new_telnr - - - - - - - - false - - - - - - - - - false - - - - - - - - - - - false - - - - Alte Angaben - - - - - - - - false - - - - Aktualisieren - - - - - - - - false - - - - Neue Angaben - - - - - - @@ -3133,8 +1935,8 @@ prof_tel_nr app_name app_fach - sem_winter sem_sommer + sem_winter sem_year check_eternal_app btn_add_document @@ -3143,48 +1945,12 @@ check_send_mail btn_apparat_save btn_apparat_apply - user_faculty_member_new_name - user_faculty_member_new_mail - user_faculty_member_new_telnr - update_faculty_member btn_copy_adis_command chkbx_show_del_media btn_reserve - edit_faculty_member_select_member - user_frame_addUser - user_edit_frame_user_select select_action_box - user_edit_frame_new_password - user_frame_userrole - user_delete_frame_user_select - user_edit_frame_role_select prof_id_adis apparat_id_adis - user_create_frame_username - user_delete_confirm - btn_delete_user - update_user - user_create_frame_password - edit_faculty_member_title - elsa_save - check_file_elsa - btn_open_document_elsa - btn_add_document_elsa - elsa_date_today - elsa_date - active_semester - elsa_prof - elsa_semester - table_elsa_list - elsa_statistics - elsa_statistics_table - elsa_cancel_create - elsa_add_new - elsa_table - edit_faculty_member_new_surname - edit_faculty_member_new_title - elsa_update - quote_entry diff --git a/src/ui/userInterface.py b/src/ui/userInterface.py index 4dd41fb..5437681 100644 --- a/src/ui/userInterface.py +++ b/src/ui/userInterface.py @@ -2,6 +2,7 @@ import atexit import os +import subprocess import sys import tempfile import webbrowser @@ -19,27 +20,24 @@ from src.backend import ( AdminCommands, Database, generateSemesterByDate, - recreateElsaFile, recreateFile, tempdelete, ) from src.logic import ( APP_NRS, - PROF_TITLES, + # PROF_TITLES, ApparatData, AvailChecker, BookData, BookGrabber, MyLogger, csv_to_list, - elsa_word_to_csv, word_docx_to_csv, ) from src.ui import ( About, ApparatExtendDialog, CalendarEntry, - DataGraph, FilePicker, Mail_Dialog, MessageCalendar, @@ -52,7 +50,11 @@ from src.ui import ( popus_confirm, reminder_ui, SearchStatisticPage, - ElsaAddEntry, + ElsaDialog, + UserCreate, + EditUser, + EditProf + ) config = OmegaConf.load("config.yaml") @@ -123,25 +125,15 @@ class Ui(Ui_Semesterapparat): ) ) self.prof_tel_nr.setValidator(QtGui.QIntValidator()) - - # set app_fach validator to allow only entries from the present items in self.app_fach and allow manual text entry - # self.app_fach.setValidator( - # QtGui.QRegularExpressionValidator( - # QtCore.QRegularExpression( - # "|".join([f"{subject[1]}" for subject in self.db.getSubjects()]) - # ) - # ) - # ) + self.prof_tel_nr.setValidator( + QtGui.QRegularExpressionValidator(QtCore.QRegularExpression(r"^\d{3,14}")) + ) + # print(self.prof_tel_nr.maxLength()) self.app_fach.setValidator( # validator to allow typing in the app_fach field QtGui.QRegularExpressionValidator( QtCore.QRegularExpression(r"[a-zA-Z0-9\s\W]+") ) ) - self.prof_tel_nr.setValidator( - QtGui.QRegularExpressionValidator( - QtCore.QRegularExpression(r"^\d{3}|^\d{4}-\d{2}|^\+\d{8,}") - ) - ) # allow only letters, numbers, whitespaces, symbols for the apparat name self.app_name.setValidator( QtGui.QRegularExpressionValidator( @@ -154,7 +146,7 @@ class Ui(Ui_Semesterapparat): ) self.tableWidget_apparate.doubleClicked.connect(self.load_app_data) self.load_app.hide() - print(f"user:{self.active_user}") + # print(f"user:{self.active_user}") userrole = self.db.getRole(self.active_user) # hide admin interface when non-admin is logged in if userrole == "admin": @@ -201,6 +193,8 @@ class Ui(Ui_Semesterapparat): self.statistics = SearchStatisticPage() self.statistics.apparat_open.connect(self.open_apparat) self.statistics.reloadSignal.connect(self.reload) + + self.elsa = ElsaDialog() # create a thread, that continually checks the validity of the inputs self.validate_thread = QThread() @@ -215,15 +209,7 @@ class Ui(Ui_Semesterapparat): # if length of apparats changes, update box_apparats # if tab is changed, gather data needed - ### Admin interface ### - self.select_action_box.addItem("") - self.select_action_box.setCurrentText("") - self.hide_all() - self.select_action_box.currentTextChanged.connect(self.admin_action_changed) - self.edit_faculty_member_select_member.currentTextChanged.connect( - self.edit_faculty_member_set_data - ) - + # Context Menus self.tableWidget_apparate.setContextMenuPolicy( QtCore.Qt.ContextMenuPolicy.CustomContextMenu @@ -237,44 +223,50 @@ class Ui(Ui_Semesterapparat): self.tableWidget_apparat_media.customContextMenuRequested.connect( self.media_context_menu ) - self.table_elsa_list.setContextMenuPolicy( - QtCore.Qt.ContextMenuPolicy.CustomContextMenu - ) - - self.table_elsa_list.customContextMenuRequested.connect(self.elsa_context_menu) - # elsa buttons - Icon("semester", self.active_semester) - Icon("today", self.elsa_date_today) - self.create_frame_elsa.setEnabled(False) - self.elsa_add_new.clicked.connect(self.add_new_elsa) - self.elsa_cancel_create.clicked.connect(self.cancel_elsa_creation) - self.elsa_save.clicked.connect(self.save_elsa) - self.elsa_date_today.clicked.connect(self.generateTodayDateElsa) - self.active_semester.clicked.connect(self.addSemester) - self.elsa_update.clicked.connect(self.update_elsa) - self.elsa_table.doubleClicked.connect(self.open_elsa) - self.btn_add_document_elsa.clicked.connect(self.addDokumentElsa) - self.check_file_elsa.clicked.connect(self.parseDokumentElsa) - self.btn_open_document_elsa.clicked.connect(self.openDocumentElsa) - self.quote_entry.clicked.connect(self.elsa_table_entry) - self.quote_entry.setEnabled(False) + # admin buttons - self.user_frame_addUser.clicked.connect(self.add_user) - self.btn_delete_user.clicked.connect(self.delete_user) - self.update_user.clicked.connect(self.update_user_data) - self.update_faculty_member.clicked.connect(self.edit_faculty_member_action) - + self.select_action_box.currentTextChanged.connect(self.adminActions) + self.select_action_box.addItem("") + self.select_action_box.setCurrentText("") + self.admin_action.setLayout(QtWidgets.QVBoxLayout()) + self.admin_action.setTitle("") + # Create instances to be used by the threads in the application self.bookGrabber = [] self.availChecker = None self.mail_thread = None self.autoGrabber = None - def elsa_context_menu(self, position): - menu = QtWidgets.QMenu() - # TODO: add functions - pass + def setWidget(self, widget): + #remove all widgets from localwidget + + self.hideWidget() + #add widget to localwidget + self.admin_action.layout().addWidget(widget) + + def hideWidget(self): + try: + widgets = [self.admin_action.layout().itemAt(i).widget() for i in range(self.admin_action.layout().count())] + except AttributeError: + return + for widget in widgets: + self.admin_action.layout().removeWidget(widget) + widget.deleteLater() + + def adminActions(self): + if self.select_action_box.currentText() == "Nutzer anlegen": + self.setWidget(UserCreate()) + self.admin_action.setTitle("Nutzer anlegen") + elif self.select_action_box.currentText() == "Nutzer bearbeiten": + self.setWidget(EditUser()) + self.admin_action.setTitle("Nutzer bearbeiten") + elif self.select_action_box.currentText() == "Lehrperson bearbeiten": + self.setWidget(EditProf()) + self.admin_action.setTitle("Lehrperson bearbeiten") + else: + self.hideWidget() + self.admin_action.setTitle("") def toggleButton(self, button): if button.isChecked(): @@ -289,263 +281,9 @@ class Ui(Ui_Semesterapparat): tempdelete() sys.exit() - def elsa_table_entry(self): - data = ElsaAddEntry() - selected_row = self.table_elsa_list.currentRow() - signature = self.table_elsa_list.item(selected_row, 10).text() - mediatype = self.table_elsa_list.item(selected_row, 11).text() - data.searchIdent.setText(signature) - if mediatype == "Zeitschriftenaufsätze": - data.btn_zs.click() - elif mediatype == "Herausgeberwerke": - data.btn_hg.click() - elif mediatype == "Monographie": - data.btn_mono.click() - - data.exec() - - def add_new_elsa(self): - self.create_frame_elsa.setEnabled(True) - self.elsa_cancel_create.setEnabled(True) - self.dokument_list_elsa.setRowCount(0) - profs = self.db.getProfs() - for prof in profs: - self.elsa_prof.addItem(f"{prof[3]}, {prof[2]}") - self.elsa_prof.setCurrentText("") - self.elsa_date.setText("") - self.elsa_semester.setText("") - self.elsa_save.setEnabled(True) - self.elsa_update.setEnabled(False) - - def cancel_elsa_creation(self): - self.create_frame_elsa.setEnabled(False) - self.elsa_cancel_create.setEnabled(False) - self.elsa_prof.setCurrentText("") - self.elsa_date.setText("") - self.elsa_semester.setText("") - self.dokument_list_elsa.setRowCount(0) - self.table_elsa_list.setRowCount(0) - self.quote_entry.setEnabled(False) - self.elsa_save.setEnabled(False) - self.elsa_update.setEnabled(False) - def generateTodayDateElsa(self): - self.elsa_date.setText(QDate.currentDate().toString("dd.MM.yyyy")) - - def addSemester(self): - self.elsa_semester.setText(self.generateSemester(today=True)) - - def update_elsa(self): - prof = self.elsa_prof.currentText() - date = self.elsa_date.text() - semester = self.elsa_semester.text() - elsa_id = self.db.getElsaId(prof, semester, date) - if elsa_id is None: - return - self.db.updateElsaApparat(elsa_id, prof, semester, date) - self.elsa_update.setEnabled(False) - self.cancel_elsa_creation() - - def save_elsa(self): - if ( - self.elsa_prof.currentText() == "" - or self.elsa_semester.text() == "" - or self.elsa_date.text() == "" - ): - # warning message - self.confirm_popup("Bitte füllen Sie alle Felder aus", title="Fehler") - - return - prof = self.elsa_prof.currentText() - semester = self.elsa_semester.text() - date = self.elsa_date.text() - - self.db.createElsaApparat(date, prof, semester) - self.cancel_elsa_creation() - self.refresh_elsa_table() - self.elsa_prof.clear() - self.elsa_prof.addItem(prof) - self.quote_entry.setEnabled(False) - - def refresh_elsa_table(self): - self.elsa_table.setRowCount(0) - elsa_apparats = self.db.getElsaApparats() - for apparat in elsa_apparats: - self.insert_elsa_into_table(apparat) - - def insert_elsa_into_table(self, apparat): - self.elsa_table.insertRow(0) - date = apparat[1] - semester = apparat[2] - prof = apparat[3] - self.elsa_table.setItem(0, 0, QtWidgets.QTableWidgetItem(prof)) - self.elsa_table.setItem(0, 1, QtWidgets.QTableWidgetItem(date)) - self.elsa_table.setItem(0, 2, QtWidgets.QTableWidgetItem(semester)) - return (semester, 1) - - def open_elsa(self): - prof = self.elsa_table.item(self.elsa_table.currentRow(), 0).text() - date = self.elsa_table.item(self.elsa_table.currentRow(), 1).text() - semester = self.elsa_table.item(self.elsa_table.currentRow(), 2).text() - self.elsa_update.setEnabled(True) - self.elsa_save.setEnabled(False) - if self.elsa_prof.currentText() == prof and date == self.elsa_date.text(): - self.logger.log_info("Same prof, stopping") - return - self.create_frame_elsa.setEnabled(True) - self.dokument_list_elsa.setRowCount(0) - self.table_elsa_list.setRowCount(0) - self.elsa_cancel_create.setEnabled(True) - # get elsa apparats, iterate over them and find the one where all matches - elsa_apparats = self.db.getElsaApparats() - elsa_id = None - for apparat in elsa_apparats: - if apparat[1] == date and apparat[2] == semester and apparat[3] == prof: - elsa_id = apparat[0] - print(elsa_id) - break - self.elsa_date.setText(date) - self.elsa_semester.setText(semester) - self.elsa_prof.setCurrentText(prof) - if elsa_id is None: - return - documents = self.db.getElsaFiles(elsa_id) - for document in documents: - print(document) - self.dokument_list_elsa.insertRow(0) - self.dokument_list_elsa.setItem( - 0, 0, QtWidgets.QTableWidgetItem(document[0]) - ) - self.dokument_list_elsa.setItem( - 0, 1, QtWidgets.QTableWidgetItem(document[1]) - ) - self.dokument_list_elsa.setItem(0, 2, QtWidgets.QTableWidgetItem("❌")) - self.dokument_list_elsa.setItem( - 0, 3, QtWidgets.QTableWidgetItem("Database") - ) - scans = self.db.getElsaMedia(elsa_id) - if scans == []: - self.create_frame_elsa.setEnabled(True) - - print(scans) - # remove all rows from the table - - for scan in scans: - print("Inserting row") - print(scan["type"]) - self.setElsaRow(scan) - - self.quote_entry.setEnabled(True) - # self.cancel_elsa_creation() - - def setElsaRow(self, scan): - self.table_elsa_list.insertRow(0) - self.table_elsa_list.setItem( - 0, 0, QtWidgets.QTableWidgetItem(scan["work_author"]) - ) - self.table_elsa_list.setItem( - 0, 1, QtWidgets.QTableWidgetItem(scan["section_author"]) - ) - self.table_elsa_list.setItem(0, 2, QtWidgets.QTableWidgetItem(scan["year"])) - self.table_elsa_list.setItem(0, 3, QtWidgets.QTableWidgetItem(scan["issue"])) - self.table_elsa_list.setItem(0, 4, QtWidgets.QTableWidgetItem(scan["edition"])) - self.table_elsa_list.setItem( - 0, 5, QtWidgets.QTableWidgetItem(scan["work_title"]) - ) - self.table_elsa_list.setItem( - 0, 6, QtWidgets.QTableWidgetItem(scan["chapter_title"]) - ) - self.table_elsa_list.setItem(0, 7, QtWidgets.QTableWidgetItem(scan["pages"])) - self.table_elsa_list.setItem(0, 8, QtWidgets.QTableWidgetItem(scan["location"])) - self.table_elsa_list.setItem( - 0, 9, QtWidgets.QTableWidgetItem(scan["publisher"]) - ) - self.table_elsa_list.setItem( - 0, 10, QtWidgets.QTableWidgetItem(scan["signature"]) - ) - self.table_elsa_list.setItem(0, 11, QtWidgets.QTableWidgetItem(scan["type"])) - - def addDokumentElsa(self): - print("Add document") - picker = FilePicker() - files = picker.pick_files() - datalist = [] - for file in files: - data = {} - print(file) - filename = file.split("/")[-1] - filetype = filename.split(".")[-1] - self.dokument_list_elsa.insertRow(0) - self.dokument_list_elsa.setItem(0, 0, QtWidgets.QTableWidgetItem(filename)) - self.dokument_list_elsa.setItem(0, 1, QtWidgets.QTableWidgetItem(filetype)) - self.dokument_list_elsa.setItem(0, 2, QtWidgets.QTableWidgetItem("*")) - self.dokument_list_elsa.setItem(0, 3, QtWidgets.QTableWidgetItem(file)) - # set tooltip of row 3 to the file path for each row - self.dokument_list_elsa.item(0, 3).setToolTip(file) - data["name"] = filename - data["path"] = file - data["type"] = filetype - datalist.append(data) - elsa_id = self.db.getElsaId( - self.elsa_prof.currentText(), - self.elsa_semester.text(), - self.elsa_date.text(), - ) - print(elsa_id) - if elsa_id is None: - # create elsa - self.db.createElsaApparat( - self.elsa_date.text(), - self.elsa_prof.currentText(), - self.elsa_semester.text(), - ) - elsa_id = self.db.getElsaId( - self.elsa_prof.currentText(), - self.elsa_semester.text(), - self.elsa_date.text(), - ) - self.db.insertElsaFile(datalist, elsa_id) - self.elsa_save.setEnabled(False) - self.refresh_elsa_table() - - def parseDokumentElsa(self): - if self.dokument_list_elsa.rowCount() == 0: - return - else: - # get the file path of the selected file based on it's row - row = self.dokument_list_elsa.currentRow() - file = self.dokument_list_elsa.item(row, 3).text() - print(file) - if file == "Database": - filename = self.dokument_list_elsa.item(row, 0).text() - filetype = self.dokument_list_elsa.item(row, 1).text() - - file = recreateElsaFile( - filename=filename, filetype=filetype, open=False - ) - print(file) - data, doctype = elsa_word_to_csv(file) - elsa_id = self.db.getElsaId( - self.elsa_prof.currentText(), - self.elsa_semester.text(), - self.elsa_date.text(), - ) - for row in data: - self.setElsaRow(row) - - self.db.addElsaMedia(row, elsa_id) - self.quote_entry.setEnabled(True) - - def openDocumentElsa(self): - # open the selected document - row = self.dokument_list_elsa.currentRow() - location = self.dokument_list_elsa.item(row, 3).text() - filetype = self.dokument_list_elsa.item(row, 1).text() - filename = self.dokument_list_elsa.item(row, 0).text() - if location == "Database": - recreateElsaFile(filename, filetype, open=True) - else: - os.system(f"{filename}") + + def get_apparats(self): alist = self.db.getAllAparats(deleted=0) alist = natsorted(alist, key=lambda x: x[4], reverse=True) @@ -575,62 +313,30 @@ class Ui(Ui_Semesterapparat): layout = QtWidgets.QVBoxLayout(self.search_statistics) layout.addWidget(self.statistics) - print("searchpage") + # print("searchpage") if self.tabWidget.currentIndex() == 0: # Apparate # clear all entries from the table self.tableWidget_apparate.setRowCount(0) self.get_apparats() if self.tabWidget.currentIndex() == 2: # Elsa - self.elsa_cancel_create.click() - try: - self.elsa_statistics.removeTab(1) - except: - self.logger.log_debug("No tab to remove") - self.elsa_table.setRowCount(0) - elsa_apparats = self.db.getElsaApparats() - elsa_apparats = natsorted(elsa_apparats, key=lambda x: x[2], reverse=True) - graph_data = {"x": [], "y": []} # x = semester, y = number of apparats - - for apparat in elsa_apparats: - print(apparat) - data = self.insert_elsa_into_table(apparat) - semester = data[0] - number = data[1] - if semester not in graph_data["x"]: - graph_data["x"].append(semester) - graph_data["y"].append(number) - else: - index = graph_data["x"].index(semester) - graph_data["y"][index] += number - - generateMissing = True if len(graph_data["x"]) > 1 else False - graph = DataGraph( - "ELSA Apparate pro Semester", - graph_data, - generateMissing, - "Anzahl der Apparate", - ) - ic(graph_data) - self.elsa_statistics_table.setRowCount(0) - for i in range(len(graph_data["x"])): - self.elsa_statistics_table.insertRow(0) - self.elsa_statistics_table.setItem( - 0, 0, QtWidgets.QTableWidgetItem(graph_data["x"][i]) - ) - self.elsa_statistics_table.setItem( - 0, 1, QtWidgets.QTableWidgetItem(str(graph_data["y"][i])) - ) - self.elsa_statistics.addTab(graph, "Graph") + elsa_layout = self.elsatab.layout() + if elsa_layout is not None: + # delete tabpage, re-add with same name at same position + return + layout = QtWidgets.QVBoxLayout(self.elsatab) + layout.addWidget(self.elsa) + + pass def edit_faculty_member_set_data(self): # get the selected member name = self.edit_faculty_member_select_member.currentText() fullname = name.replace(",", "") - print(fullname, name) + # print(fullname, name) # get the data for the selected member data = self.db.getProfByName(fullname) # set the data - print(data) + # print(data) if data is None: self.edit_faculty_member_title.setText("") self.faculty_member_old_telnr.setText("") @@ -646,176 +352,17 @@ class Ui(Ui_Semesterapparat): else self.edit_faculty_member_title.setText("") ) - def add_user(self): - username = self.user_create_frame_username.text() - password = self.user_create_frame_password.text() - role = self.user_frame_userrole.currentText() - if self.db.checkUsername(username): - return - userdata = AdminCommands().create_password(password) - self.db.createUser( - user=username, - password=f"{userdata[1]}{userdata[0]}", - salt=userdata[1], - role=role, - ) - self.user_create_frame_username.clear() - self.user_create_frame_password.clear() - self.user_frame_userrole.setCurrentText("") - self.admin_action_changed() + - def delete_user(self): - if self.user_delete_confirm.isChecked(): - username = self.user_delete_frame_user_select.currentText() - self.db.deleteUser(username) - self.user_delete_frame_user_select.removeItem( - self.user_delete_frame_user_select.currentIndex() - ) - self.user_delete_confirm.setChecked(False) - else: - self.user_delete_err_message.setText( - "Bitte bestätigen Sie die Löschung des Nutzers" - ) # TODO: implement error message + + + - def update_user_data(self): - username = self.user_edit_frame_user_select.currentText() - password = ( - self.user_edit_frame_new_password.text() - if self.user_edit_frame_new_password.text() != "" - else None - ) - role = ( - self.user_edit_frame_role_select.currentText() - if self.user_edit_frame_role_select.currentText() != "" - else None - ) - userdata = AdminCommands().create_password(password) - data = { - "password": f"{userdata[1]}{userdata[0]}", - "salt": userdata[1], - "role": role, - } - data = {key: value for key, value in data.items() if value is not None} - print(data) - self.db.updateUser(username=username, data=data) - self.user_edit_frame_user_select.setCurrentText("") - self.user_edit_frame_new_password.clear() - self.user_edit_frame_role_select.setCurrentText("") - def edit_faculty_member_action(self): - def __gen_fullname(fname, lname, data): - if fname == "" and lname == "": - return data[3] - if fname == "" and lname != "": - return f"{lname} {data[1]}" - if fname != "" and lname == "": - return f"{data[2]} {fname}" - if fname != "" and lname != "": - return f"{lname} {fname}" + - # get the data and use new value if it is not none and does not mach the old value - if self.edit_faculty_member_select_member.currentText() == "": - return - olddata = self.db.getFacultyMember( - self.edit_faculty_member_select_member.currentText() - ) - ic(olddata) - data = olddata - oldlname = data[2] - oldfname = data[1] - # take data except first and last entry - - titel = ( - self.edit_faculty_member_new_title.currentText() - if self.edit_faculty_member_new_title.currentText() != "Kein Titel" - else None - ) - fname = ( - self.edit_faculty_member_new_surname.text() - if self.edit_faculty_member_new_surname.text() != "" - else self.edit_faculty_member_select_member.currentText() - .split(" ")[1] - .strip() - ) - lname = ( - self.user_faculty_member_new_name.text() - if self.user_faculty_member_new_name.text() != "" - else self.edit_faculty_member_select_member.currentText() - .split(" ")[0] - .strip() - ) - fullname = __gen_fullname(fname, lname, data) - telnr = self.user_faculty_member_new_telnr.text() - mail = self.user_faculty_member_new_mail.text() - new_data = { - "titel": titel, - "fname": fname, - "lname": lname, - "fullname": fullname, - "mail": mail, - "telnr": telnr, - } - new_data = {key: value for key, value in new_data.items() if value != ""} - self.db.updateFacultyMember(data=new_data, oldlname=oldlname, oldfname=oldfname) - self.add_faculty_member_data() - self.edit_faculty_member_new_title.setCurrentText("") - self.edit_faculty_member_new_surname.clear() - self.user_faculty_member_new_name.clear() - self.user_faculty_member_new_telnr.clear() - self.user_faculty_member_new_mail.clear() - - def hide_all(self): - self.userCreateBox.hide() - self.userChangeDataBox.hide() - self.deleteUserBox.hide() - self.profChangeDataBox.hide() - - def admin_action_changed(self): - action = self.select_action_box.currentText() - roles = self.db.getRoles() - roles = [role[0] for role in roles] - # remove duplicates - roles = list(dict.fromkeys(roles)) - users = self.db.getUsers() - users = [user[2] for user in users] - users.remove(self.active_user) - if "admin" in users: - users.remove("admin") - if action == "Nutzer anlegen": - self.hide_all() - self.userCreateBox.show() - self.user_frame_userrole.clear() - self.user_frame_userrole.addItems(roles) - elif action == "Nutzer aktualisieren": - self.hide_all() - self.userChangeDataBox.show() - self.user_edit_frame_role_select.addItems(roles) - self.user_edit_frame_user_select.addItems(users) - elif action == "Nutzer löschen": - self.hide_all() - self.deleteUserBox.show() - self.user_delete_frame_user_select.addItems(users) - self.user_delete_frame_user_select.setCurrentText("") - self.user_delete_frame_user_select.addItems(users) - - elif action == "Lehrperson bearbeiten": - self.hide_all() - self.profChangeDataBox.show() - self.add_faculty_member_data() - self.edit_faculty_member_new_title.addItems(PROF_TITLES) - - else: - self.hide_all() - return - - def add_faculty_member_data(self): - faculty_members = self.db.getFacultyMembers() - names = [f"{member[5]}" for member in faculty_members] - self.edit_faculty_member_select_member.clear() - self.edit_faculty_member_select_member.addItems(names) - self.edit_faculty_member_select_member.addItem("") - self.edit_faculty_member_select_member.setCurrentText("") + def generateSemester(self, today=False): """Generates the current semester. @@ -864,9 +411,9 @@ class Ui(Ui_Semesterapparat): self.prof_mail.setText(appdata.prof_mail) self.prof_tel_nr.setText(appdata.prof_tel) self.app_name.setText(appdata.appname) - print("changing dropdown app_fach from '' to ", appdata.app_fach) + # print("changing dropdown app_fach from '' to ", appdata.app_fach) self.app_fach.setCurrentText(appdata.app_fach) - print("changed dropdown app_fach to ", self.app_fach.currentText()) + # print("changed dropdown app_fach to ", self.app_fach.currentText()) if appdata.semester is not None: self.sem_sommer.setChecked( True if appdata.semester.split(" ")[0] == "SoSe" else False @@ -915,7 +462,8 @@ class Ui(Ui_Semesterapparat): else self.sem_winter.text() + " " + self.sem_year.text() ) appdata.prof_adis_id = self.prof_id_adis.text() - self.add_files() + prof_id = self.db.getProfByName(appdata.profname)[0] + self.add_files(prof_id) appdata.apparat_adis_id = self.apparat_id_adis.text() self.db.updateApparat(appdata) @@ -936,7 +484,7 @@ class Ui(Ui_Semesterapparat): return popup.result() def thread_check(self): - print("Thread started") + # print("Thread started") self.prof_mail.textChanged.connect(self.validate_prof_mail) self.drpdwn_prof_name.editTextChanged.connect(self.validate_prof_name) self.prof_tel_nr.textChanged.connect(self.validate_prof_tel) @@ -1095,9 +643,9 @@ class Ui(Ui_Semesterapparat): def update_documemt_list(self): app_id = self.active_apparat - prof_id = self.db.getProfId( - self.drpdwn_prof_name.currentText().replace(", ", " ") - ) + prof_id = self.db.getProfByName( + self.drpdwn_prof_name.currentText().replace(",","") + )[0] files = self.db.getFiles(app_id, prof_id) for file in files: self.dokument_list.insertRow(0) @@ -1176,7 +724,8 @@ class Ui(Ui_Semesterapparat): ) app_id = self.active_apparat - prof_id = self.db.getProfId(self.drpdwn_prof_name.currentText()) + prof_id = self.db.getProfId(self.profdata) + ic(prof_id) # check if app_id is in database if self.db.checkApparatExistsById(app_id) is False: # create apparat @@ -1184,7 +733,7 @@ class Ui(Ui_Semesterapparat): # create a thread that updates the progress label after each medium # self.bookGrabber = None - bookGrabber = BookGrabber() + bookGrabber = BookGrabber(self.active_apparat) bookGrabber.add_values(mode=mode, prof_id=prof_id, app_id=app_id, data=data) bookGrabber.finished.connect(self.hide_progress_label) bookGrabber.finished.connect(self.update_app_media_list) @@ -1192,7 +741,7 @@ class Ui(Ui_Semesterapparat): bookGrabber.start() while bookGrabber.isRunning(): - print("waiting for thread to finish") + # print("waiting for thread to finish") QtWidgets.QApplication.processEvents() self.__clear_fields() @@ -1233,13 +782,13 @@ class Ui(Ui_Semesterapparat): self.avail_status.show() books = self.db.getBooks( self.active_apparat, - self.db.getProfId(self.drpdwn_prof_name.currentText()), + self.db.getProfId(self.profdata), deleted=0, ) # thread = QThread() appnumber = self.active_apparat - print(links) + # print(links) self.availChecker = AvailChecker(links, appnumber, books=books) # availcheck.moveToThread(thread) # availcheck.finished.connect(thread.quit) @@ -1282,12 +831,12 @@ class Ui(Ui_Semesterapparat): def update_app_media_list(self): deleted = 0 if not self.chkbx_show_del_media.isChecked() else 1 app_id = self.active_apparat - prof_id = self.db.getProfId(self.drpdwn_prof_name.currentText()) + prof_id = self.db.getProfId(self.profdata) books: list[dict[int, BookData, int]] = self.db.getBooks( app_id, prof_id, deleted ) - # print(books) + # # print(books) # take the dataclass from the tuple # booklist:list[BookData]=[book[0] for book in books] self.tableWidget_apparat_media.setRowCount(0) @@ -1296,7 +845,7 @@ class Ui(Ui_Semesterapparat): book_data = book["bookdata"] availability = book["available"] # bd = BookData().from_string(book) - # print(bd, type(bd)) + # # print(bd, type(bd)) # create a new row below the last one self.tableWidget_apparat_media.insertRow( self.tableWidget_apparat_media.rowCount() @@ -1386,11 +935,11 @@ class Ui(Ui_Semesterapparat): self.drpdwn_prof_name.addItem(f"{prof[3]}, {prof[2]}") def add_document(self): - print("Add document") + # print("Add document") picker = FilePicker() files = picker.pick_files() for file in files: - print(file) + # print(file) filename = file.split("/")[-1] filetype = filename.split(".")[-1] self.dokument_list.insertRow(0) @@ -1401,7 +950,6 @@ class Ui(Ui_Semesterapparat): # set tooltip of row 3 to the file path for each row self.dokument_list.item(0, 3).setToolTip(file) - # self.add_files() def open_document(self): _selected_doc_name = "" @@ -1420,9 +968,10 @@ class Ui(Ui_Semesterapparat): self.confirm_popup("Bitte erst ein Dokument auswählen!", title="Fehler") return if not _selected_doc_location == "Database": - path = Path(_selected_doc_location) - path: Path = path.resolve() - path = path + "/" + _selected_doc_name + path = Path(_selected_doc_location + "/" + _selected_doc_name) + # path: Path = path.resolve() + # path. + # path = path + "/" + _selected_doc_name if os.getenv("OS") == "Windows_NT": path = path.resolve() os.startfile(path) @@ -1439,6 +988,8 @@ class Ui(Ui_Semesterapparat): # path = Path(path) def add_media_from_file(self): + app_id = self.active_apparat + prof_id = self.db.getProfId(self.profdata) def __open_dialog(signatures): dialog = QtWidgets.QDialog() frame = parsed_titles_ui() @@ -1452,7 +1003,6 @@ class Ui(Ui_Semesterapparat): frame.count.setText(str(len(signatures))) frame.toolButton.click() data = frame.return_data() - print(data) # if no data was returned, return return data @@ -1464,7 +1014,7 @@ class Ui(Ui_Semesterapparat): else: # if file is selected, check for books in the file if self.dokument_list.currentRow() != -1: - print("File selected") + # print("File selected") file = self.dokument_list.item( self.dokument_list.currentRow(), 3 ).text() @@ -1488,7 +1038,6 @@ class Ui(Ui_Semesterapparat): ) temp_file.close() file = temp_file.name - print(file) if file_type == "pdf": # Todo: implement parser here self.confirm_popup( @@ -1498,9 +1047,6 @@ class Ui(Ui_Semesterapparat): if file_type == "csv": signatures = csv_to_list(file) data = __open_dialog(signatures) - # get the app_id and prof_id - app_id = self.active_apparat - prof_id = self.db.getProfId(self.drpdwn_prof_name.currentText()) # add the data to the database for book in data: if type(book) != BookData: @@ -1519,10 +1065,6 @@ class Ui(Ui_Semesterapparat): # if no data was returned, return if data == []: return - # get the app_id and prof_id - app_id = self.active_apparat - prof_id = self.db.getProfId(self.drpdwn_prof_name.currentText()) - # add the data to the database for book in data: if type(book) != BookData: continue @@ -1530,35 +1072,38 @@ class Ui(Ui_Semesterapparat): bookdata=book, app_id=app_id, prof_id=prof_id ) self.update_app_media_list() - print(len(signatures)) + # print(len(signatures)) def btn_check_file_threaded(self): - print("Checking file") + # print("Checking file") # get active app_id and prof_id self.tableWidget_apparate.setEnabled(False) self.tableWidget_apparate.setToolTip( "Bitte warten, bis alle Medien hinzugefügt wurden" ) app_id = self.active_apparat - prof_id = self.db.getProfId(self.drpdwn_prof_name.currentText()) + ic(self.profdata) + prof_id = self.db.getProfId(self.profdata) + + ic(prof_id) # check if apparat in database # if app_id not in database, create apparat created = False if not self.db.checkApparatExistsById(app_id): # create apparat - print("Creating apparat") - self.btn_save_apparat(False) + # print("Creating apparat") + if self.btn_save_apparat(False) == False: + return created = True - prof_id = self.db.getProfId(self.drpdwn_prof_name.currentText()) if self.dokument_list.rowCount() == 0: - print("No file selected") + # print("No file selected") self.tableWidget_apparate.setEnabled(True) self.tableWidget_apparate.setToolTip("") return else: # if file is selected, check for books in the file - print("File selected") + # print("File selected") file = self.dokument_list.item(self.dokument_list.currentRow(), 3).text() file_type = self.dokument_list.item( @@ -1574,11 +1119,11 @@ class Ui(Ui_Semesterapparat): file = recreateFile(file_name, app_id, file_type, open=False) else: if not created: - self.add_files() + self.add_files(prof_id) if file_type == "pdf": # Todo: implement parser here self.confirm_popup( - "PDF Dateien werden noch nicht unterstützt!", title="Fehler" + "PDF Dateien werden nicht unterstützt!", title="Fehler" ) return if file_type == "csv": @@ -1594,9 +1139,10 @@ class Ui(Ui_Semesterapparat): signatures = [i for i in signatures if i != ""] # ic(signatures) - print("starting thread") - - autoGrabber = BookGrabber() + # print("starting thread") + if prof_id is None: + prof_id = self.db.getProfId(self.profdata) + autoGrabber = BookGrabber(self.active_apparat) autoGrabber.add_values( mode="ARRAY", app_id=app_id, prof_id=prof_id, data=signatures ) @@ -1652,7 +1198,7 @@ class Ui(Ui_Semesterapparat): def btn_save_apparat(self, clear_fields=True): if not self.validate_fields(): self.confirm_popup("Bitte alle Pflichtfelder ausfüllen!", title="Fehler") - return + return False appd = ApparatData() appd.appnr = self.active_apparat appd.prof_title = ( @@ -1669,16 +1215,15 @@ class Ui(Ui_Semesterapparat): appd.deleted = 0 appd.prof_adis_id = self.prof_id_adis.text() appd.apparat_adis_id = self.apparat_id_adis.text() - if self.dokument_list.rowCount() > 0: - self.add_files() if not self.validate_fields(): pass error = self.db.createApparat(appd) + + if self.dokument_list.rowCount() > 0: + self.add_files() if error is not None: self.confirm_popup(error.__str__(), title="Fehler") return - # if self.dokument_list.rowCount() > 0: - # self.add_files() appdata = self.db.getAllAparats() # merge self.appdata and appdata, remove duplicates self.apparats = list(set(self.apparats + appdata)) @@ -1695,9 +1240,9 @@ class Ui(Ui_Semesterapparat): pid=appd.profname, ) if clear_fields: - print("clearing fields") + # print("clearing fields") self.__clear_fields() - + return True def send_mail_preview(self): pass @@ -1705,7 +1250,16 @@ class Ui(Ui_Semesterapparat): def active_apparat(self): return self.drpdwn_app_nr.currentText() - def add_files(self): + @property + def profdata(self): + return { + "title":self.prof_title.text(), + "profname": self.drpdwn_prof_name.currentText(), + "prof_mail":self.prof_mail.text(), + "prof_tel":self.prof_tel_nr.text() + } + + def add_files(self, prof_id=None): files = [] for i in range(self.dokument_list.rowCount()): files.append( @@ -1721,7 +1275,14 @@ class Ui(Ui_Semesterapparat): self.db.insertFile( files, self.active_apparat, - self.db.getProfId(self.drpdwn_prof_name.currentText()), + self.db.getProfId( + { + "title": self.prof_title.text(), + "profname": self.drpdwn_prof_name.currentText(), + "prof_mail": self.prof_mail.text(), + "prof_tel": self.prof_tel_nr.text(), + } + ), ) def update_apparat_list(self): @@ -1792,7 +1353,7 @@ class Ui(Ui_Semesterapparat): reminder.exec() if reminder.result() == QtWidgets.QDialog.DialogCode.Accepted: data = reminder.return_message() - print(data) + # print(data) self.db.addMessage( data, self.active_user, @@ -1825,12 +1386,12 @@ class Ui(Ui_Semesterapparat): # self.line_app_info.setText(appnr) def __delete_message(id): - print("trying to delete message", id) + # print("trying to delete message", id) self.db.deleteMessage(id) # selected_date = self.calendarWidget.selectedDate().toString("yyyy-MM-dd") - # print(selected_date) + # # print(selected_date) messages = self.db.getMessages(selected_date) if messages == []: return @@ -1845,7 +1406,7 @@ class Ui(Ui_Semesterapparat): settings.exec() if settings.result() == QtWidgets.QDialog.DialogCode.Accepted: data = settings.return_data() - print(data) + # print(data) OmegaConf.save(data, "config.yaml") # re-load the config OmegaConf.load("config.yaml") @@ -1854,12 +1415,21 @@ class Ui(Ui_Semesterapparat): def reload(self): # create a new connection to the database, refresh table data and replace the old connection - self.db = Database() - self.apparats = self.db.getAllAparats(deleted=0) - self.apparats = natsorted(self.apparats, key=lambda x: x[4], reverse=True) - self.tableWidget_apparate.setRowCount(0) - for apparat in self.apparats: - self.insert_apparat_into_table(apparat) + # self.db = Database() + # self.apparats = self.db.getAllAparats(deleted=0) + # self.apparats = natsorted(self.apparats, key=lambda x: x[4], reverse=True) + # self.tableWidget_apparate.setRowCount(0) + # for apparat in self.apparats: + # self.insert_apparat_into_table(apparat) + # kill the process and restart the application + state = self.confirm_popup( + "Bitte das Programm neustarten, um Änderungen zu übernehemen", + "Einstellungen geändert", + ) + if state == 1: + exit() + else: + pass def media_context_menu(self, position): menu = QtWidgets.QMenu() @@ -1875,14 +1445,15 @@ class Ui(Ui_Semesterapparat): book = self.tableWidget_apparat_media.item( self.tableWidget_apparat_media.currentRow(), 1 ).text() + prof_id = self.db.getProfId(self.profdata) data = self.db.getBookBasedOnSignature( app_id=self.active_apparat, signature=book, - prof_id=self.db.getProfId(self.drpdwn_prof_name.currentText()), + prof_id=prof_id, ) book_id = self.db.getBookIdBasedOnSignature( self.active_apparat, - self.db.getProfId(self.drpdwn_prof_name.currentText()), + prof_id, book, ) widget = QtWidgets.QDialog() @@ -1894,10 +1465,10 @@ class Ui(Ui_Semesterapparat): widget.exec() if widget.result() == QtWidgets.QDialog.DialogCode.Accepted: data = bookedit.get_data() - print(data) - self.db.updateBookdata(data, book_id) + # print(data) + self.db.updateBookdata(bookdata=data, book_id=book_id) # self.db.update_bookdata(data) - print("accepted") + # print("accepted") self.update_app_media_list() else: return @@ -1907,6 +1478,7 @@ class Ui(Ui_Semesterapparat): selected_apparat_id = self.tableWidget_apparate.item( self.tableWidget_apparate.currentRow(), 0 ).text() + prof_id = self.db.getProfId(self.profdata) # check how many rows are selected selected_rows = self.tableWidget_apparat_media.selectionModel().selectedRows() if len(selected_rows) == 1: @@ -1915,12 +1487,12 @@ class Ui(Ui_Semesterapparat): ).text() book_id = self.db.getBookIdBasedOnSignature( selected_apparat_id, - prof_id=self.db.getProfId(self.drpdwn_prof_name.currentText()), + prof_id=prof_id, signature=signature, ) message = f'Soll das Medium "{self.tableWidget_apparat_media.item(self.tableWidget_apparat_media.currentRow(),0).text()}" wirklich gelöscht werden?' state = self.confirm_popup(message, title="Löschen?") - print(state) + # print(state) if state == 1: self.db.deleteBook(book_id) self.update_app_media_list() @@ -1933,15 +1505,15 @@ class Ui(Ui_Semesterapparat): for r in ranges: for row in range(r.topRow(), r.bottomRow() + 1): rows.append(row) - print(rows) + # print(rows) message = f"Sollen die {len(rows)} Medien wirklich gelöscht werden?" state = self.confirm_popup(message, title="Löschen?") if state == 1: for _ in rows: signature = self.tableWidget_apparat_media.item(_, 1).text() book_id = self.db.getBookIdBasedOnSignature( - selected_apparat_id, - prof_id=self.db.getProfId(self.drpdwn_prof_name.currentText()), + app_id=selected_apparat_id, + prof_id=prof_id, signature=signature, ) self.db.deleteBook(book_id) @@ -1953,12 +1525,12 @@ class Ui(Ui_Semesterapparat): # return data from dialog if ok is pressed if framework.result() == QtWidgets.QDialog.DialogCode.Accepted: data = framework.get_data() - print(data) + # print(data) # return data selected_apparat_id = self.tableWidget_apparate.item( self.tableWidget_apparate.currentRow(), 0 ).text() - print(selected_apparat_id) + # print(selected_apparat_id) self.db.setNewSemesterDate( selected_apparat_id, data["semester"], dauerapp=data["dauerapp"] @@ -1982,7 +1554,7 @@ class Ui(Ui_Semesterapparat): if not active_apparat_id: # get column 0 of the selected row pass - print(active_apparat_id) + # print(active_apparat_id) # profname = self.drpdwn_prof_name.currentText().replace(",", "").split(" ") # if profname != [""]: @@ -1990,7 +1562,7 @@ class Ui(Ui_Semesterapparat): # if pid == "": # pid = profname # get the row of the clicked cell - prof_id = self.db.getProfId(pid) + prof_id = self.db.getProfByName(pid)[0] # if profname == "Name Kein": # profname = pid if self.app_name.text() != "": @@ -2003,15 +1575,15 @@ class Ui(Ui_Semesterapparat): app_subject = self.db.getApparatData(active_apparat_id, app_name) app_subject = app_subject.app_fach # profname = f"{profname.split(" ")[1]} {profname.split(" ")[0]}" - print(pid) + # print(pid) if prof_id: pmail = self.db.getSpecificProfData(prof_id, ["mail"]) prof_name = self.db.getSpecificProfData(prof_id, ["fullname"]) else: pmail = self.prof_mail.text() - print(prof_name) + # print(prof_name) # create a new thread to show the mail interface and send the mail - print("showing mail dialog") + # print("showing mail dialog") self.mail_thread = Mail_Dialog( app_id=active_apparat_id, prof_name=prof_name, @@ -2040,7 +1612,7 @@ class Ui(Ui_Semesterapparat): ).text() message = f"Soll der Apparat {selected_apparat_id} wirklich gelöscht werden?" state = self.confirm_popup(message, title="Löschen?") - print(state) + # print(state) pid = self.__get_table_data_field(self.tableWidget_apparate, position[0], 2) if state == 1: self.db.deleteApparat(selected_apparat_id, generateSemesterByDate()) @@ -2050,7 +1622,7 @@ class Ui(Ui_Semesterapparat): self.apparats.remove(apparat) break self.old_apparats = self.apparats - print(self.apparats) + # print(self.apparats) # remove the row from the table self.tableWidget_apparate.removeRow(self.tableWidget_apparate.currentRow()) # send mail to prof @@ -2058,8 +1630,8 @@ class Ui(Ui_Semesterapparat): def launch_gui(): - print("trying to login") - print("checking if database available") + # print("trying to login") + # print("checking if database available") log = MyLogger("login") log.log_info("Starting login dialog") app = QtWidgets.QApplication(sys.argv) @@ -2071,11 +1643,11 @@ def launch_gui(): if ui.lresult == 1: # if login is successful, open main window # show login dialog - print(ui.lusername) + # print(ui.lusername) MainWindow = QtWidgets.QMainWindow() aui = Ui(MainWindow, username=ui.lusername) - print(aui.active_user) + # print(aui.active_user) MainWindow.show() # atexit.register() atexit.register(tempdelete) @@ -2093,12 +1665,12 @@ def launch_gui(): """change passwords for apparats, change passwords for users, list users, create and delete users etc""" # open a console window # console = "" - print("admin") + # print("admin") atexit.register(tempdelete) if __name__ == "__main__": - print("This is the main window") + # print("This is the main window") # app = QtWidgets.QApplication(sys.argv) # window = MainWindow() # app.exec() diff --git a/src/ui/widgets/MessageCalendar.py b/src/ui/widgets/MessageCalendar.py index d1cd6b0..1cba2ce 100644 --- a/src/ui/widgets/MessageCalendar.py +++ b/src/ui/widgets/MessageCalendar.py @@ -34,7 +34,7 @@ class MessageCalendar(QtWidgets.QCalendarWidget): # remove all drawn circles for message in messages: - print(message) + # print(message) # Convert the date string to a QDate object date = QDate.fromString(message["remind_at"], "yyyy-MM-dd") # Store the message for the date diff --git a/src/ui/widgets/__init__.py b/src/ui/widgets/__init__.py index cb0b777..d2469cd 100644 --- a/src/ui/widgets/__init__.py +++ b/src/ui/widgets/__init__.py @@ -5,3 +5,7 @@ from .graph import DataGraph from .calendar_entry import CalendarEntry from .MessageCalendar import MessageCalendar from .searchPage import SearchStatisticPage +from .elsa_main import ElsaDialog +from .admin_create_user import UserCreate +from .admin_edit_user import EditUser +from .admin_edit_prof import EditProf \ No newline at end of file diff --git a/src/ui/widgets/admin_create_user.py b/src/ui/widgets/admin_create_user.py new file mode 100644 index 0000000..7d70bb3 --- /dev/null +++ b/src/ui/widgets/admin_create_user.py @@ -0,0 +1,38 @@ +from PyQt6 import QtWidgets, QtCore, QtGui +from PyQt6.QtCore import pyqtSignal +from .widget_sources.Ui_admin_create_user import Ui_Dialog +from src.backend import AdminCommands, Database +class UserCreate(QtWidgets.QDialog, Ui_Dialog): + admin_action_changed = pyqtSignal() + def __init__(self): + super(UserCreate, self).__init__() + self.setupUi(self) + + self.user_frame_addUser.clicked.connect(self.add_user) + + #Variables + self.db = Database() + + def add_user(self): + username = self.user_create_frame_username.text() + password = self.user_create_frame_password.text() + role = self.user_frame_userrole.currentText() + if self.db.checkUsername(username): + return + userdata = AdminCommands().create_password(password) + self.db.createUser( + user=username, + password=f"{userdata[1]}{userdata[0]}", + salt=userdata[1], + role=role, + ) + self.user_create_frame_username.clear() + self.user_create_frame_password.clear() + self.user_frame_userrole.setCurrentText("") + self.admin_action_changed.emit() + +def launch(): + app = QtWidgets.QApplication([]) + window = UserCreate() + window.show() + app.exec() \ No newline at end of file diff --git a/src/ui/widgets/admin_edit_prof.py b/src/ui/widgets/admin_edit_prof.py new file mode 100644 index 0000000..608c5cd --- /dev/null +++ b/src/ui/widgets/admin_edit_prof.py @@ -0,0 +1,118 @@ +from .widget_sources.Ui_admin_edit_prof import Ui_Dialog# +from PyQt6 import QtWidgets, QtCore +from PyQt6.QtCore import pyqtSignal +from icecream import ic +from src.backend import Database + +class EditProf(QtWidgets.QDialog, Ui_Dialog): + def __init__(self): + super(EditProf, self).__init__() + self.setupUi(self) + #Variables + self.db = Database() + + self.edit_faculty_member_select_member.currentTextChanged.connect( + self.edit_faculty_member_set_data + ) + self.update_faculty_member.clicked.connect(self.edit_faculty_member_action) + self.gather_data() + + def gather_data(self): + self.add_faculty_member_data() + + def add_faculty_member_data(self): + faculty_members = self.db.getFacultyMembers() + names = [f"{member[5]}" for member in faculty_members] + self.edit_faculty_member_select_member.clear() + self.edit_faculty_member_select_member.addItems(names) + self.edit_faculty_member_select_member.addItem("") + self.edit_faculty_member_select_member.setCurrentText("") + + def edit_faculty_member_set_data(self): + # get the selected member + name = self.edit_faculty_member_select_member.currentText() + fullname = name.replace(",", "") + # print(fullname, name) + # get the data for the selected member + data = self.db.getProfByName(fullname) + # set the data + # print(data) + if data is None: + self.edit_faculty_member_title.setText("") + self.faculty_member_old_telnr.setText("") + self.faculty_member_oldmail.setText("") + self.edit_faculty_member_title.setText("") + else: + # title = data[1] + # if title is None: + # title = "" + # self.edit_faculty_member_title.setText(title) + self.faculty_member_old_telnr.setText(data[6]) + self.faculty_member_oldmail.setText(data[5]) + ( + self.edit_faculty_member_title.setText(data[1]) + if data[1] is not None + else self.edit_faculty_member_title.setText("") + ) + + def edit_faculty_member_action(self): + def __gen_fullname(fname, lname, data): + if fname == "" and lname == "": + return data[3] + if fname == "" and lname != "": + return f"{lname} {data[1]}" + if fname != "" and lname == "": + return f"{data[2]} {fname}" + if fname != "" and lname != "": + return f"{lname} {fname}" + + # get the data and use new value if it is not none and does not mach the old value + if self.edit_faculty_member_select_member.currentText() == "": + return + olddata = self.db.getFacultyMember( + self.edit_faculty_member_select_member.currentText() + ) + ic(olddata) + data = olddata + oldlname = data[2] + oldfname = data[1] + # take data except first and last entry + + titel = ( + self.edit_faculty_member_new_title.text()() + if self.edit_faculty_member_new_title.text() != "" + else None + ) + fname = ( + self.edit_faculty_member_new_surname.text() + if self.edit_faculty_member_new_surname.text() != "" + else self.edit_faculty_member_select_member.currentText() + .split(" ")[1] + .strip() + ) + lname = ( + self.user_faculty_member_new_name.text() + if self.user_faculty_member_new_name.text() != "" + else self.edit_faculty_member_select_member.currentText() + .split(" ")[0] + .strip() + ) + fullname = __gen_fullname(fname, lname, data) + telnr = self.user_faculty_member_new_telnr.text() + mail = self.user_faculty_member_new_mail.text() + new_data = { + "titel": titel, + "fname": fname, + "lname": lname, + "fullname": fullname, + "mail": mail, + "telnr": telnr, + } + new_data = {key: value for key, value in new_data.items() if value != ""} + self.db.updateFacultyMember(data=new_data, oldlname=oldlname, oldfname=oldfname) + self.add_faculty_member_data() + self.edit_faculty_member_new_title.setText("") + self.edit_faculty_member_new_surname.clear() + self.user_faculty_member_new_name.clear() + self.user_faculty_member_new_telnr.clear() + self.user_faculty_member_new_mail.clear() \ No newline at end of file diff --git a/src/ui/widgets/admin_edit_user.py b/src/ui/widgets/admin_edit_user.py new file mode 100644 index 0000000..93fe317 --- /dev/null +++ b/src/ui/widgets/admin_edit_user.py @@ -0,0 +1,53 @@ +from .widget_sources.Ui_admin_edit_user import Ui_Dialog +from PyQt6 import QtWidgets, QtCore +from PyQt6.QtCore import pyqtSignal +from icecream import ic +from src.backend import Database +from src.backend import AdminCommands +class EditUser(QtWidgets.QDialog, Ui_Dialog): + def __init__(self): + super(EditUser, self).__init__() + self.setupUi(self) + self.btn_delete_user.clicked.connect(self.delete_user) + self.update_user.clicked.connect(self.update_user_data) + + #Variables + self.db = Database() + + def update_user_data(self): + username = self.user_delete_frame_user_select.currentText() + password = ( + self.user_edit_frame_new_password.text() + if self.user_edit_frame_new_password.text() != "" + else None + ) + role = ( + self.user_edit_frame_role_select.currentText() + if self.user_edit_frame_role_select.currentText() != "" + else None + ) + + userdata = AdminCommands().create_password(password) + data = { + "password": f"{userdata[1]}{userdata[0]}", + "salt": userdata[1], + "role": role, + } + data = {key: value for key, value in data.items() if value is not None} + # print(data) + self.db.updateUser(username=username, data=data) + self.user_delete_frame_user_select.setCurrentText("") + self.user_edit_frame_new_password.clear() + self.user_edit_frame_role_select.setCurrentText("") + + + def delete_user(self): + if self.user_delete_confirm.isChecked(): + username = self.user_delete_frame_user_select.currentText() + self.db.deleteUser(username) + self.user_delete_frame_user_select.removeItem( + self.user_delete_frame_user_select.currentIndex() + ) + self.user_delete_confirm.setChecked(False) + else: + pass diff --git a/src/ui/widgets/calendar_entry.py b/src/ui/widgets/calendar_entry.py index 070f69e..d113840 100644 --- a/src/ui/widgets/calendar_entry.py +++ b/src/ui/widgets/calendar_entry.py @@ -38,12 +38,12 @@ class CalendarEntry(QtWidgets.QDialog, Ui_Dialog): def delete_message(self): value = self.spin_select_message.value() - print(value) + # print(value) if value > 0: value = value - 1 message = self.messages[value] id = self.__get_id(message) - print("id", id) + # print("id", id) # del self.messages[value - 1] self.spin_select_message.setMaximum(len(self.messages)) self.message_box.clear() diff --git a/src/ui/widgets/elsa_main.py b/src/ui/widgets/elsa_main.py new file mode 100644 index 0000000..a490666 --- /dev/null +++ b/src/ui/widgets/elsa_main.py @@ -0,0 +1,357 @@ +import os +from natsort import natsorted +from icecream import ic +from .widget_sources.Ui_elsa_maindialog import Ui_Dialog +from PyQt6 import QtCore, QtWidgets, QtGui +from PyQt6.QtCore import QDate +from src import Icon +from src.backend import recreateElsaFile, generateSemesterByDate, Database +from src.logic import elsa_word_to_csv, MyLogger +from src.ui.dialogs import ElsaAddEntry +from src.ui.widgets import FilePicker +from src.ui.widgets import DataGraph + +class ElsaDialog(QtWidgets.QDialog, Ui_Dialog): + def __init__(self): + super().__init__() + self.setupUi(self) + self.table_elsa_list.setContextMenuPolicy( + QtCore.Qt.ContextMenuPolicy.CustomContextMenu + ) + self.table_elsa_list.customContextMenuRequested.connect(self.elsa_context_menu) + # elsa buttons + Icon("semester", self.active_semester) + Icon("today", self.elsa_date_today) + self.create_frame_elsa.setEnabled(False) + self.elsa_add_new.clicked.connect(self.add_new_elsa) + self.elsa_cancel_create.clicked.connect(self.cancel_elsa_creation) + self.elsa_save.clicked.connect(self.save_elsa) + self.elsa_date_today.clicked.connect(self.generateTodayDateElsa) + self.active_semester.clicked.connect(self.addSemester) + self.elsa_update.clicked.connect(self.update_elsa) + self.elsa_table.doubleClicked.connect(self.open_elsa) + self.btn_add_document_elsa.clicked.connect(self.addDokumentElsa) + self.check_file_elsa.clicked.connect(self.parseDokumentElsa) + self.btn_open_document_elsa.clicked.connect(self.openDocumentElsa) + self.quote_entry.clicked.connect(self.elsa_table_entry) + self.quote_entry.setEnabled(False) + + ##Variables + self.logger = MyLogger("ElsaDialog") + self.db = Database() + self.graph_data = {"x": [generateSemesterByDate()], "y": [0]} + + self.loadFrame() + # self.show() + + def elsa_context_menu(self, position): + menu = QtWidgets.QMenu() + # TODO: add functions + pass + def elsa_table_entry(self): + data = ElsaAddEntry() + selected_row = self.table_elsa_list.currentRow() + signature = self.table_elsa_list.item(selected_row, 10).text() + mediatype = self.table_elsa_list.item(selected_row, 11).text() + data.searchIdent.setText(signature) + if mediatype == "Zeitschriftenaufsätze": + data.btn_zs.click() + elif mediatype == "Herausgeberwerke": + data.btn_hg.click() + elif mediatype == "Monographie": + data.btn_mono.click() + + data.exec() + + def add_new_elsa(self): + self.create_frame_elsa.setEnabled(True) + self.elsa_cancel_create.setEnabled(True) + self.dokument_list_elsa.setRowCount(0) + profs = self.db.getProfs() + for prof in profs: + self.elsa_prof.addItem(f"{prof[3]}, {prof[2]}") + self.elsa_prof.setCurrentText("") + self.elsa_date.setText("") + self.elsa_semester.setText("") + self.elsa_save.setEnabled(True) + self.elsa_update.setEnabled(False) + semester = generateSemesterByDate() + if semester in self.graph_data["x"]: + position = self.graph_data["x"] + + def cancel_elsa_creation(self): + self.create_frame_elsa.setEnabled(False) + self.elsa_cancel_create.setEnabled(False) + self.elsa_prof.setCurrentText("") + self.elsa_date.setText("") + self.elsa_semester.setText("") + self.dokument_list_elsa.setRowCount(0) + self.table_elsa_list.setRowCount(0) + self.quote_entry.setEnabled(False) + self.elsa_save.setEnabled(False) + self.elsa_update.setEnabled(False) + def generateTodayDateElsa(self): + self.elsa_date.setText(QDate.currentDate().toString("dd.MM.yyyy")) + + def addSemester(self): + self.elsa_semester.setText(generateSemesterByDate()) + + def update_elsa(self): + prof = self.elsa_prof.currentText() + date = self.elsa_date.text() + semester = self.elsa_semester.text() + elsa_id = self.db.getElsaId(prof, semester, date) + if elsa_id is None: + return + self.db.updateElsaApparat(elsa_id, prof, semester, date) + self.elsa_update.setEnabled(False) + self.cancel_elsa_creation() + + def save_elsa(self): + if ( + self.elsa_prof.currentText() == "" + or self.elsa_semester.text() == "" + or self.elsa_date.text() == "" + ): + # warning message + self.confirm_popup("Bitte füllen Sie alle Felder aus", title="Fehler") + + return + prof = self.elsa_prof.currentText() + semester = self.elsa_semester.text() + date = self.elsa_date.text() + + self.db.createElsaApparat(date, prof, semester) + self.cancel_elsa_creation() + self.refresh_elsa_table() + self.elsa_prof.clear() + self.elsa_prof.addItem(prof) + self.quote_entry.setEnabled(False) + + def refresh_elsa_table(self): + self.elsa_table.setRowCount(0) + elsa_apparats = self.db.getElsaApparats() + for apparat in elsa_apparats: + self.insert_elsa_into_table(apparat) + + def insert_elsa_into_table(self, apparat): + self.elsa_table.insertRow(0) + date = apparat[1] + semester = apparat[2] + prof = apparat[3] + self.elsa_table.setItem(0, 0, QtWidgets.QTableWidgetItem(prof)) + self.elsa_table.setItem(0, 1, QtWidgets.QTableWidgetItem(date)) + self.elsa_table.setItem(0, 2, QtWidgets.QTableWidgetItem(semester)) + return (semester, 1) + + def open_elsa(self): + prof = self.elsa_table.item(self.elsa_table.currentRow(), 0).text() + date = self.elsa_table.item(self.elsa_table.currentRow(), 1).text() + semester = self.elsa_table.item(self.elsa_table.currentRow(), 2).text() + self.elsa_update.setEnabled(True) + self.elsa_save.setEnabled(False) + if self.elsa_prof.currentText() == prof and date == self.elsa_date.text(): + self.logger.log_info("Same prof, stopping") + return + self.create_frame_elsa.setEnabled(True) + self.dokument_list_elsa.setRowCount(0) + self.table_elsa_list.setRowCount(0) + self.elsa_cancel_create.setEnabled(True) + # get elsa apparats, iterate over them and find the one where all matches + elsa_apparats = self.db.getElsaApparats() + elsa_id = None + for apparat in elsa_apparats: + if apparat[1] == date and apparat[2] == semester and apparat[3] == prof: + elsa_id = apparat[0] + # print(elsa_id) + break + self.elsa_date.setText(date) + self.elsa_semester.setText(semester) + self.elsa_prof.setCurrentText(prof) + if elsa_id is None: + return + documents = self.db.getElsaFiles(elsa_id) + for document in documents: + # print(document) + self.dokument_list_elsa.insertRow(0) + self.dokument_list_elsa.setItem( + 0, 0, QtWidgets.QTableWidgetItem(document[0]) + ) + self.dokument_list_elsa.setItem( + 0, 1, QtWidgets.QTableWidgetItem(document[1]) + ) + self.dokument_list_elsa.setItem(0, 2, QtWidgets.QTableWidgetItem("❌")) + self.dokument_list_elsa.setItem( + 0, 3, QtWidgets.QTableWidgetItem("Database") + ) + scans = self.db.getElsaMedia(elsa_id) + if scans == []: + self.create_frame_elsa.setEnabled(True) + + # print(scans) + # remove all rows from the table + + for scan in scans: + # print("Inserting row") + # print(scan["type"]) + self.setElsaRow(scan) + + self.quote_entry.setEnabled(True) + # self.cancel_elsa_creation() + + def setElsaRow(self, scan): + self.table_elsa_list.insertRow(0) + self.table_elsa_list.setItem( + 0, 0, QtWidgets.QTableWidgetItem(scan["work_author"]) + ) + self.table_elsa_list.setItem( + 0, 1, QtWidgets.QTableWidgetItem(scan["section_author"]) + ) + self.table_elsa_list.setItem(0, 2, QtWidgets.QTableWidgetItem(scan["year"])) + self.table_elsa_list.setItem(0, 3, QtWidgets.QTableWidgetItem(scan["issue"])) + self.table_elsa_list.setItem(0, 4, QtWidgets.QTableWidgetItem(scan["edition"])) + self.table_elsa_list.setItem( + 0, 5, QtWidgets.QTableWidgetItem(scan["work_title"]) + ) + self.table_elsa_list.setItem( + 0, 6, QtWidgets.QTableWidgetItem(scan["chapter_title"]) + ) + self.table_elsa_list.setItem(0, 7, QtWidgets.QTableWidgetItem(scan["pages"])) + self.table_elsa_list.setItem(0, 8, QtWidgets.QTableWidgetItem(scan["location"])) + self.table_elsa_list.setItem( + 0, 9, QtWidgets.QTableWidgetItem(scan["publisher"]) + ) + self.table_elsa_list.setItem( + 0, 10, QtWidgets.QTableWidgetItem(scan["signature"]) + ) + self.table_elsa_list.setItem(0, 11, QtWidgets.QTableWidgetItem(scan["type"])) + + def addDokumentElsa(self): + # print("Add document") + picker = FilePicker() + files = picker.pick_files() + datalist = [] + for file in files: + data = {} + # print(file) + filename = file.split("/")[-1] + filetype = filename.split(".")[-1] + self.dokument_list_elsa.insertRow(0) + self.dokument_list_elsa.setItem(0, 0, QtWidgets.QTableWidgetItem(filename)) + self.dokument_list_elsa.setItem(0, 1, QtWidgets.QTableWidgetItem(filetype)) + self.dokument_list_elsa.setItem(0, 2, QtWidgets.QTableWidgetItem("*")) + self.dokument_list_elsa.setItem(0, 3, QtWidgets.QTableWidgetItem(file)) + # set tooltip of row 3 to the file path for each row + self.dokument_list_elsa.item(0, 3).setToolTip(file) + data["name"] = filename + data["path"] = file + data["type"] = filetype + datalist.append(data) + elsa_id = self.db.getElsaId( + self.elsa_prof.currentText(), + self.elsa_semester.text(), + self.elsa_date.text(), + ) + # print(elsa_id) + if elsa_id is None: + # create elsa + self.db.createElsaApparat( + self.elsa_date.text(), + self.elsa_prof.currentText(), + self.elsa_semester.text(), + ) + elsa_id = self.db.getElsaId( + self.elsa_prof.currentText(), + self.elsa_semester.text(), + self.elsa_date.text(), + ) + self.db.insertElsaFile(datalist, elsa_id) + self.elsa_save.setEnabled(False) + self.refresh_elsa_table() + + def parseDokumentElsa(self): + if self.dokument_list_elsa.rowCount() == 0: + return + else: + # get the file path of the selected file based on it's row + row = self.dokument_list_elsa.currentRow() + file = self.dokument_list_elsa.item(row, 3).text() + # print(file) + if file == "Database": + filename = self.dokument_list_elsa.item(row, 0).text() + filetype = self.dokument_list_elsa.item(row, 1).text() + + file = recreateElsaFile( + filename=filename, filetype=filetype, open=False + ) + # print(file) + data, doctype = elsa_word_to_csv(file) + elsa_id = self.db.getElsaId( + self.elsa_prof.currentText(), + self.elsa_semester.text(), + self.elsa_date.text(), + ) + for row in data: + self.setElsaRow(row) + + self.db.addElsaMedia(row, elsa_id) + self.quote_entry.setEnabled(True) + + def openDocumentElsa(self): + # open the selected document + row = self.dokument_list_elsa.currentRow() + location = self.dokument_list_elsa.item(row, 3).text() + filetype = self.dokument_list_elsa.item(row, 1).text() + filename = self.dokument_list_elsa.item(row, 0).text() + if location == "Database": + recreateElsaFile(filename, filetype, open=True) + else: + os.system(f"{filename}") + + def loadFrame(self): + self.elsa_cancel_create.click() + try: + self.elsa_statistics.removeTab(1) + except: + self.logger.log_debug("No tab to remove") + self.elsa_table.setRowCount(0) + elsa_apparats = self.db.getElsaApparats() + elsa_apparats = natsorted(elsa_apparats, key=lambda x: x[2], reverse=True) + # x = semester, y = number of apparats + + for apparat in elsa_apparats: + # print(apparat) + data = self.insert_elsa_into_table(apparat) + semester = data[0] + number = data[1] + if semester not in self.graph_data["x"]: + self.graph_data["x"].append(semester) + self.graph_data["y"].append(number) + else: + index = self.graph_data["x"].index(semester) + self.graph_data["y"][index] += number + + generateMissing = True if len(self.graph_data["x"]) > 1 else False + graph = DataGraph( + "ELSA Apparate pro Semester", + self.graph_data, + generateMissing, + "Anzahl der Apparate", + ) + ic(self.graph_data) + self.elsa_statistics_table.setRowCount(0) + for i in range(len(self.graph_data["x"])): + self.elsa_statistics_table.insertRow(0) + self.elsa_statistics_table.setItem( + 0, 0, QtWidgets.QTableWidgetItem(self.graph_data["x"][i]) + ) + self.elsa_statistics_table.setItem( + 0, 1, QtWidgets.QTableWidgetItem(str(self.graph_data["y"][i])) + ) + self.elsa_statistics.addTab(graph, "Graph") + +def launch(): + app = QtWidgets.QApplication([]) + window = ElsaDialog() + window.show() + app.exec() \ No newline at end of file diff --git a/src/ui/widgets/filepicker.py b/src/ui/widgets/filepicker.py index fdf6ed7..5843688 100644 --- a/src/ui/widgets/filepicker.py +++ b/src/ui/widgets/filepicker.py @@ -33,4 +33,4 @@ if __name__ == "__main__": app = QApplication(sys.argv) picker = FilePicker() files = picker.pick_files() - print(files) + # print(files) diff --git a/src/ui/widgets/searchPage.py b/src/ui/widgets/searchPage.py index a13a73b..e4fc6f6 100644 --- a/src/ui/widgets/searchPage.py +++ b/src/ui/widgets/searchPage.py @@ -98,7 +98,7 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog): self.book_search_result.setItem( 0, 1, QtWidgets.QTableWidgetItem(book[0].signature) ) - print(book[1]) + # print(book[1]) self.book_search_result.setItem( 0, 2, @@ -140,7 +140,7 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog): self.btn_notify_for_deletion.setEnabled(False) def setStatisticTableSize(self): - # print(self.statistics_table.size(), self.statistics_table.rowCount()) + # # print(self.statistics_table.size(), self.statistics_table.rowCount()) size = self.statistics_table.size() h = size.height() w = size.width() @@ -252,7 +252,7 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog): selected_apparats.append(self.tableWidget.item(i, 2).text()) selected_apparat_rows.append(i) # delete all selected apparats - # print(selected_apparats) + # # print(selected_apparats) self.logger.log_info(f"Deleting apparats: {selected_apparats}") for apparat in selected_apparats: self.db.deleteApparat(apparat, generateSemesterByDate()) @@ -442,13 +442,13 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog): "Dieser Semesterapparat kann nicht gelöscht werden, da er bereits gelöscht wurde" ) elif parent_depth == 2: - print("depth", parent_depth) + # print("depth", parent_depth) # apparat selected case - open the apparat in the frame self.apparat_open.emit(apparat) return def emit_signal(self, *args): - print("emit_signal", *args) + # print("emit_signal", *args) self.apparat_open.emit(args[1]) diff --git a/src/ui/widgets/widget_sources/Ui_admin_create_user.py b/src/ui/widgets/widget_sources/Ui_admin_create_user.py new file mode 100644 index 0000000..2ee7368 --- /dev/null +++ b/src/ui/widgets/widget_sources/Ui_admin_create_user.py @@ -0,0 +1,55 @@ +# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\admin_create_user.ui' +# +# Created by: PyQt6 UI code generator 6.6.1 +# +# WARNING: Any manual changes made to this file will be lost when pyuic6 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt6 import QtCore, QtGui, QtWidgets + + +class Ui_Dialog(object): + def setupUi(self, Dialog): + Dialog.setObjectName("Dialog") + Dialog.resize(400, 70) + self.gridLayout = QtWidgets.QGridLayout(Dialog) + self.gridLayout.setHorizontalSpacing(10) + self.gridLayout.setVerticalSpacing(6) + self.gridLayout.setObjectName("gridLayout") + self.label = QtWidgets.QLabel(parent=Dialog) + self.label.setObjectName("label") + self.gridLayout.addWidget(self.label, 0, 0, 1, 1) + self.user_create_frame_password = QtWidgets.QLineEdit(parent=Dialog) + self.user_create_frame_password.setObjectName("user_create_frame_password") + self.gridLayout.addWidget(self.user_create_frame_password, 1, 1, 1, 1) + self.user_frame_addUser = QtWidgets.QPushButton(parent=Dialog) + self.user_frame_addUser.setObjectName("user_frame_addUser") + self.gridLayout.addWidget(self.user_frame_addUser, 1, 3, 1, 1) + self.label_3 = QtWidgets.QLabel(parent=Dialog) + self.label_3.setObjectName("label_3") + self.gridLayout.addWidget(self.label_3, 0, 2, 1, 1) + self.user_create_frame_username = QtWidgets.QLineEdit(parent=Dialog) + self.user_create_frame_username.setObjectName("user_create_frame_username") + self.gridLayout.addWidget(self.user_create_frame_username, 0, 1, 1, 1) + self.user_frame_userrole = QtWidgets.QComboBox(parent=Dialog) + self.user_frame_userrole.setEditable(True) + self.user_frame_userrole.setObjectName("user_frame_userrole") + self.gridLayout.addWidget(self.user_frame_userrole, 0, 3, 1, 1) + self.label_2 = QtWidgets.QLabel(parent=Dialog) + self.label_2.setObjectName("label_2") + self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1) + + self.retranslateUi(Dialog) + QtCore.QMetaObject.connectSlotsByName(Dialog) + Dialog.setTabOrder(self.user_create_frame_username, self.user_frame_userrole) + Dialog.setTabOrder(self.user_frame_userrole, self.user_create_frame_password) + Dialog.setTabOrder(self.user_create_frame_password, self.user_frame_addUser) + + def retranslateUi(self, Dialog): + _translate = QtCore.QCoreApplication.translate + Dialog.setWindowTitle(_translate("Dialog", "Dialog")) + self.label.setText(_translate("Dialog", "Nutzername")) + self.user_frame_addUser.setText(_translate("Dialog", "Anlegen")) + self.label_3.setText(_translate("Dialog", "Rolle")) + self.label_2.setText(_translate("Dialog", "Passwort")) diff --git a/src/ui/widgets/widget_sources/Ui_admin_create_user.ui.py b/src/ui/widgets/widget_sources/Ui_admin_create_user.ui.py new file mode 100644 index 0000000..1e8b7a0 --- /dev/null +++ b/src/ui/widgets/widget_sources/Ui_admin_create_user.ui.py @@ -0,0 +1,8 @@ +# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\admin_create_user.ui.iytYFY' +# +# Created by: PyQt6 UI code generator 6.6.1 +# +# WARNING: Any manual changes made to this file will be lost when pyuic6 is +# run again. Do not edit this file unless you know what you are doing. + + diff --git a/src/ui/widgets/widget_sources/Ui_admin_edit_prof.py b/src/ui/widgets/widget_sources/Ui_admin_edit_prof.py new file mode 100644 index 0000000..75e2f4a --- /dev/null +++ b/src/ui/widgets/widget_sources/Ui_admin_edit_prof.py @@ -0,0 +1,139 @@ +# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\admin_edit_prof.ui' +# +# Created by: PyQt6 UI code generator 6.6.1 +# +# WARNING: Any manual changes made to this file will be lost when pyuic6 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt6 import QtCore, QtGui, QtWidgets + + +class Ui_Dialog(object): + def setupUi(self, Dialog): + Dialog.setObjectName("Dialog") + Dialog.setWindowModality(QtCore.Qt.WindowModality.ApplicationModal) + Dialog.resize(540, 281) + self.gridLayout = QtWidgets.QGridLayout(Dialog) + self.gridLayout.setObjectName("gridLayout") + self.label = QtWidgets.QLabel(parent=Dialog) + self.label.setObjectName("label") + self.gridLayout.addWidget(self.label, 0, 0, 1, 1) + self.gridLayout_2 = QtWidgets.QGridLayout() + self.gridLayout_2.setObjectName("gridLayout_2") + self.faculty_member_old_telnr = QtWidgets.QLineEdit(parent=Dialog) + self.faculty_member_old_telnr.setReadOnly(True) + self.faculty_member_old_telnr.setObjectName("faculty_member_old_telnr") + self.gridLayout_2.addWidget(self.faculty_member_old_telnr, 1, 1, 1, 1) + self.edit_faculty_member_title = QtWidgets.QLineEdit(parent=Dialog) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.edit_faculty_member_title.sizePolicy().hasHeightForWidth()) + self.edit_faculty_member_title.setSizePolicy(sizePolicy) + self.edit_faculty_member_title.setReadOnly(True) + self.edit_faculty_member_title.setObjectName("edit_faculty_member_title") + self.gridLayout_2.addWidget(self.edit_faculty_member_title, 0, 0, 1, 1) + self.label_4 = QtWidgets.QLabel(parent=Dialog) + self.label_4.setObjectName("label_4") + self.gridLayout_2.addWidget(self.label_4, 2, 0, 1, 1) + self.label_3 = QtWidgets.QLabel(parent=Dialog) + self.label_3.setObjectName("label_3") + self.gridLayout_2.addWidget(self.label_3, 1, 0, 1, 1) + self.edit_faculty_member_select_member = QtWidgets.QComboBox(parent=Dialog) + self.edit_faculty_member_select_member.setObjectName("edit_faculty_member_select_member") + self.gridLayout_2.addWidget(self.edit_faculty_member_select_member, 0, 1, 1, 1) + self.faculty_member_oldmail = QtWidgets.QLineEdit(parent=Dialog) + self.faculty_member_oldmail.setReadOnly(True) + self.faculty_member_oldmail.setObjectName("faculty_member_oldmail") + self.gridLayout_2.addWidget(self.faculty_member_oldmail, 2, 1, 1, 1) + self.gridLayout_2.setColumnStretch(0, 1) + self.gridLayout.addLayout(self.gridLayout_2, 0, 2, 1, 1) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.delete_faculty_member = QtWidgets.QPushButton(parent=Dialog) + self.delete_faculty_member.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) + self.delete_faculty_member.setObjectName("delete_faculty_member") + self.horizontalLayout.addWidget(self.delete_faculty_member) + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Minimum) + self.horizontalLayout.addItem(spacerItem) + self.update_faculty_member = QtWidgets.QPushButton(parent=Dialog) + self.update_faculty_member.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) + self.update_faculty_member.setObjectName("update_faculty_member") + self.horizontalLayout.addWidget(self.update_faculty_member) + self.gridLayout.addLayout(self.horizontalLayout, 3, 2, 1, 1) + self.line = QtWidgets.QFrame(parent=Dialog) + self.line.setFrameShape(QtWidgets.QFrame.Shape.HLine) + self.line.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken) + self.line.setObjectName("line") + self.gridLayout.addWidget(self.line, 1, 2, 1, 1) + self.line_2 = QtWidgets.QFrame(parent=Dialog) + self.line_2.setLineWidth(1) + self.line_2.setFrameShape(QtWidgets.QFrame.Shape.HLine) + self.line_2.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken) + self.line_2.setObjectName("line_2") + self.gridLayout.addWidget(self.line_2, 1, 0, 1, 1) + self.gridLayout_3 = QtWidgets.QGridLayout() + self.gridLayout_3.setObjectName("gridLayout_3") + self.label_9 = QtWidgets.QLabel(parent=Dialog) + self.label_9.setObjectName("label_9") + self.gridLayout_3.addWidget(self.label_9, 4, 0, 1, 1) + self.edit_faculty_member_new_title = QtWidgets.QLineEdit(parent=Dialog) + self.edit_faculty_member_new_title.setObjectName("edit_faculty_member_new_title") + self.gridLayout_3.addWidget(self.edit_faculty_member_new_title, 0, 1, 1, 1) + self.user_faculty_member_new_telnr = QtWidgets.QLineEdit(parent=Dialog) + self.user_faculty_member_new_telnr.setObjectName("user_faculty_member_new_telnr") + self.gridLayout_3.addWidget(self.user_faculty_member_new_telnr, 3, 1, 1, 1) + self.label_8 = QtWidgets.QLabel(parent=Dialog) + self.label_8.setObjectName("label_8") + self.gridLayout_3.addWidget(self.label_8, 3, 0, 1, 1) + self.label_7 = QtWidgets.QLabel(parent=Dialog) + self.label_7.setObjectName("label_7") + self.gridLayout_3.addWidget(self.label_7, 2, 0, 1, 1) + self.user_faculty_member_new_mail = QtWidgets.QLineEdit(parent=Dialog) + self.user_faculty_member_new_mail.setObjectName("user_faculty_member_new_mail") + self.gridLayout_3.addWidget(self.user_faculty_member_new_mail, 4, 1, 1, 1) + self.user_faculty_member_new_name = QtWidgets.QLineEdit(parent=Dialog) + self.user_faculty_member_new_name.setObjectName("user_faculty_member_new_name") + self.gridLayout_3.addWidget(self.user_faculty_member_new_name, 2, 1, 1, 1) + self.edit_faculty_member_new_surname = QtWidgets.QLineEdit(parent=Dialog) + self.edit_faculty_member_new_surname.setObjectName("edit_faculty_member_new_surname") + self.gridLayout_3.addWidget(self.edit_faculty_member_new_surname, 1, 1, 1, 1) + self.label_5 = QtWidgets.QLabel(parent=Dialog) + self.label_5.setObjectName("label_5") + self.gridLayout_3.addWidget(self.label_5, 0, 0, 1, 1) + self.label_6 = QtWidgets.QLabel(parent=Dialog) + self.label_6.setObjectName("label_6") + self.gridLayout_3.addWidget(self.label_6, 1, 0, 1, 1) + self.gridLayout.addLayout(self.gridLayout_3, 2, 2, 1, 1) + self.label_2 = QtWidgets.QLabel(parent=Dialog) + self.label_2.setObjectName("label_2") + self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1) + self.line_3 = QtWidgets.QFrame(parent=Dialog) + self.line_3.setFrameShape(QtWidgets.QFrame.Shape.VLine) + self.line_3.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken) + self.line_3.setObjectName("line_3") + self.gridLayout.addWidget(self.line_3, 0, 1, 1, 1) + self.line_4 = QtWidgets.QFrame(parent=Dialog) + self.line_4.setFrameShape(QtWidgets.QFrame.Shape.VLine) + self.line_4.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken) + self.line_4.setObjectName("line_4") + self.gridLayout.addWidget(self.line_4, 2, 1, 1, 1) + + self.retranslateUi(Dialog) + QtCore.QMetaObject.connectSlotsByName(Dialog) + + def retranslateUi(self, Dialog): + _translate = QtCore.QCoreApplication.translate + Dialog.setWindowTitle(_translate("Dialog", "Dialog")) + self.label.setText(_translate("Dialog", "Alte Angaben")) + self.label_4.setText(_translate("Dialog", "Mail")) + self.label_3.setText(_translate("Dialog", "Telefonnummer")) + self.delete_faculty_member.setText(_translate("Dialog", "Löschen")) + self.update_faculty_member.setText(_translate("Dialog", "Aktualisieren")) + self.label_9.setText(_translate("Dialog", "Mail")) + self.label_8.setText(_translate("Dialog", "Telefonnummer")) + self.label_7.setText(_translate("Dialog", "Nachname")) + self.label_5.setText(_translate("Dialog", "Titel")) + self.label_6.setText(_translate("Dialog", "Vorname")) + self.label_2.setText(_translate("Dialog", "Neue Angaben")) diff --git a/src/ui/widgets/widget_sources/Ui_admin_edit_user.py b/src/ui/widgets/widget_sources/Ui_admin_edit_user.py new file mode 100644 index 0000000..df53449 --- /dev/null +++ b/src/ui/widgets/widget_sources/Ui_admin_edit_user.py @@ -0,0 +1,60 @@ +# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\admin_edit_user.ui' +# +# Created by: PyQt6 UI code generator 6.6.1 +# +# WARNING: Any manual changes made to this file will be lost when pyuic6 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt6 import QtCore, QtGui, QtWidgets + + +class Ui_Dialog(object): + def setupUi(self, Dialog): + Dialog.setObjectName("Dialog") + Dialog.resize(382, 100) + self.gridLayout = QtWidgets.QGridLayout(Dialog) + self.gridLayout.setObjectName("gridLayout") + self.label_3 = QtWidgets.QLabel(parent=Dialog) + self.label_3.setObjectName("label_3") + self.gridLayout.addWidget(self.label_3, 0, 2, 1, 1) + self.user_edit_frame_role_select = QtWidgets.QComboBox(parent=Dialog) + self.user_edit_frame_role_select.setObjectName("user_edit_frame_role_select") + self.gridLayout.addWidget(self.user_edit_frame_role_select, 0, 3, 1, 1) + self.label = QtWidgets.QLabel(parent=Dialog) + self.label.setObjectName("label") + self.gridLayout.addWidget(self.label, 0, 0, 1, 1) + self.user_edit_frame_new_password = QtWidgets.QLineEdit(parent=Dialog) + self.user_edit_frame_new_password.setObjectName("user_edit_frame_new_password") + self.gridLayout.addWidget(self.user_edit_frame_new_password, 1, 1, 1, 1) + self.user_delete_frame_user_select = QtWidgets.QComboBox(parent=Dialog) + self.user_delete_frame_user_select.setObjectName("user_delete_frame_user_select") + self.gridLayout.addWidget(self.user_delete_frame_user_select, 0, 1, 1, 1) + self.label_2 = QtWidgets.QLabel(parent=Dialog) + self.label_2.setObjectName("label_2") + self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.user_delete_confirm = QtWidgets.QCheckBox(parent=Dialog) + self.user_delete_confirm.setObjectName("user_delete_confirm") + self.horizontalLayout.addWidget(self.user_delete_confirm) + self.btn_delete_user = QtWidgets.QPushButton(parent=Dialog) + self.btn_delete_user.setObjectName("btn_delete_user") + self.horizontalLayout.addWidget(self.btn_delete_user) + self.gridLayout.addLayout(self.horizontalLayout, 2, 1, 1, 1) + self.update_user = QtWidgets.QPushButton(parent=Dialog) + self.update_user.setObjectName("update_user") + self.gridLayout.addWidget(self.update_user, 2, 3, 1, 1) + + self.retranslateUi(Dialog) + QtCore.QMetaObject.connectSlotsByName(Dialog) + + def retranslateUi(self, Dialog): + _translate = QtCore.QCoreApplication.translate + Dialog.setWindowTitle(_translate("Dialog", "Dialog")) + self.label_3.setText(_translate("Dialog", "Rolle")) + self.label.setText(_translate("Dialog", "Nutzername")) + self.label_2.setText(_translate("Dialog", "Passwort")) + self.user_delete_confirm.setText(_translate("Dialog", "Löschen?")) + self.btn_delete_user.setText(_translate("Dialog", "Löschen")) + self.update_user.setText(_translate("Dialog", " Aktualisieren ")) diff --git a/src/ui/widgets/widget_sources/Ui_elsa_maindialog.py b/src/ui/widgets/widget_sources/Ui_elsa_maindialog.py new file mode 100644 index 0000000..4979139 --- /dev/null +++ b/src/ui/widgets/widget_sources/Ui_elsa_maindialog.py @@ -0,0 +1,259 @@ +# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\elsa_maindialog.ui' +# +# Created by: PyQt6 UI code generator 6.6.1 +# +# WARNING: Any manual changes made to this file will be lost when pyuic6 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt6 import QtCore, QtGui, QtWidgets + + +class Ui_Dialog(object): + def setupUi(self, Dialog): + Dialog.setObjectName("Dialog") + Dialog.resize(1237, 848) + self.verticalLayout = QtWidgets.QVBoxLayout(Dialog) + self.verticalLayout.setObjectName("verticalLayout") + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.verticalLayout_2 = QtWidgets.QVBoxLayout() + self.verticalLayout_2.setObjectName("verticalLayout_2") + spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding) + self.verticalLayout_2.addItem(spacerItem) + self.elsa_add_new = QtWidgets.QPushButton(parent=Dialog) + self.elsa_add_new.setObjectName("elsa_add_new") + self.verticalLayout_2.addWidget(self.elsa_add_new) + self.elsa_cancel_create = QtWidgets.QPushButton(parent=Dialog) + self.elsa_cancel_create.setEnabled(False) + self.elsa_cancel_create.setObjectName("elsa_cancel_create") + self.verticalLayout_2.addWidget(self.elsa_cancel_create) + spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding) + self.verticalLayout_2.addItem(spacerItem1) + self.horizontalLayout.addLayout(self.verticalLayout_2) + self.elsa_table = QtWidgets.QTableWidget(parent=Dialog) + self.elsa_table.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOff) + self.elsa_table.setObjectName("elsa_table") + self.elsa_table.setColumnCount(3) + self.elsa_table.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.elsa_table.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.elsa_table.setHorizontalHeaderItem(1, item) + item = QtWidgets.QTableWidgetItem() + self.elsa_table.setHorizontalHeaderItem(2, item) + self.elsa_table.horizontalHeader().setDefaultSectionSize(374) + self.horizontalLayout.addWidget(self.elsa_table) + self.verticalLayout.addLayout(self.horizontalLayout) + self.create_frame_elsa = QtWidgets.QGroupBox(parent=Dialog) + self.create_frame_elsa.setFlat(False) + self.create_frame_elsa.setObjectName("create_frame_elsa") + self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.create_frame_elsa) + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.gridLayout_2 = QtWidgets.QGridLayout() + self.gridLayout_2.setObjectName("gridLayout_2") + self.label = QtWidgets.QLabel(parent=self.create_frame_elsa) + self.label.setObjectName("label") + self.gridLayout_2.addWidget(self.label, 0, 0, 1, 1) + self.elsa_semester = QtWidgets.QLineEdit(parent=self.create_frame_elsa) + self.elsa_semester.setObjectName("elsa_semester") + self.gridLayout_2.addWidget(self.elsa_semester, 2, 1, 1, 1) + self.active_semester = QtWidgets.QPushButton(parent=self.create_frame_elsa) + self.active_semester.setText("") + self.active_semester.setAutoDefault(False) + self.active_semester.setDefault(False) + self.active_semester.setFlat(True) + self.active_semester.setObjectName("active_semester") + self.gridLayout_2.addWidget(self.active_semester, 2, 2, 1, 1) + self.elsa_date = QtWidgets.QLineEdit(parent=self.create_frame_elsa) + self.elsa_date.setObjectName("elsa_date") + self.gridLayout_2.addWidget(self.elsa_date, 1, 1, 1, 1) + spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding) + self.gridLayout_2.addItem(spacerItem2, 3, 0, 1, 1) + self.elsa_date_today = QtWidgets.QPushButton(parent=self.create_frame_elsa) + self.elsa_date_today.setText("") + self.elsa_date_today.setAutoDefault(False) + self.elsa_date_today.setDefault(False) + self.elsa_date_today.setFlat(True) + self.elsa_date_today.setObjectName("elsa_date_today") + self.gridLayout_2.addWidget(self.elsa_date_today, 1, 2, 1, 1) + self.label_3 = QtWidgets.QLabel(parent=self.create_frame_elsa) + self.label_3.setObjectName("label_3") + self.gridLayout_2.addWidget(self.label_3, 2, 0, 1, 1) + self.label_2 = QtWidgets.QLabel(parent=self.create_frame_elsa) + self.label_2.setObjectName("label_2") + self.gridLayout_2.addWidget(self.label_2, 1, 0, 1, 1) + self.elsa_prof = QtWidgets.QComboBox(parent=self.create_frame_elsa) + self.elsa_prof.setObjectName("elsa_prof") + self.gridLayout_2.addWidget(self.elsa_prof, 0, 1, 1, 1) + self.horizontalLayout_4 = QtWidgets.QHBoxLayout() + self.horizontalLayout_4.setObjectName("horizontalLayout_4") + self.elsa_save = QtWidgets.QPushButton(parent=self.create_frame_elsa) + self.elsa_save.setObjectName("elsa_save") + self.horizontalLayout_4.addWidget(self.elsa_save) + self.elsa_update = QtWidgets.QPushButton(parent=self.create_frame_elsa) + self.elsa_update.setObjectName("elsa_update") + self.horizontalLayout_4.addWidget(self.elsa_update) + self.gridLayout_2.addLayout(self.horizontalLayout_4, 4, 1, 1, 1) + self.horizontalLayout_2.addLayout(self.gridLayout_2) + spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) + self.horizontalLayout_2.addItem(spacerItem3) + self.dokument_list_elsa = QtWidgets.QTableWidget(parent=self.create_frame_elsa) + self.dokument_list_elsa.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOff) + self.dokument_list_elsa.setObjectName("dokument_list_elsa") + self.dokument_list_elsa.setColumnCount(3) + self.dokument_list_elsa.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.dokument_list_elsa.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.dokument_list_elsa.setHorizontalHeaderItem(1, item) + item = QtWidgets.QTableWidgetItem() + self.dokument_list_elsa.setHorizontalHeaderItem(2, item) + self.dokument_list_elsa.horizontalHeader().setDefaultSectionSize(116) + self.dokument_list_elsa.horizontalHeader().setMinimumSectionSize(43) + self.dokument_list_elsa.verticalHeader().setMinimumSectionSize(25) + self.horizontalLayout_2.addWidget(self.dokument_list_elsa) + self.verticalLayout_3 = QtWidgets.QVBoxLayout() + self.verticalLayout_3.setSpacing(10) + self.verticalLayout_3.setObjectName("verticalLayout_3") + self.btn_add_document_elsa = QtWidgets.QPushButton(parent=self.create_frame_elsa) + self.btn_add_document_elsa.setObjectName("btn_add_document_elsa") + self.verticalLayout_3.addWidget(self.btn_add_document_elsa) + self.btn_open_document_elsa = QtWidgets.QPushButton(parent=self.create_frame_elsa) + self.btn_open_document_elsa.setObjectName("btn_open_document_elsa") + self.verticalLayout_3.addWidget(self.btn_open_document_elsa) + self.check_file_elsa = QtWidgets.QPushButton(parent=self.create_frame_elsa) + self.check_file_elsa.setObjectName("check_file_elsa") + self.verticalLayout_3.addWidget(self.check_file_elsa) + spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding) + self.verticalLayout_3.addItem(spacerItem4) + self.horizontalLayout_2.addLayout(self.verticalLayout_3) + self.verticalLayout.addWidget(self.create_frame_elsa) + self.horizontalLayout_6 = QtWidgets.QHBoxLayout() + self.horizontalLayout_6.setObjectName("horizontalLayout_6") + self.quote_entry = QtWidgets.QPushButton(parent=Dialog) + self.quote_entry.setObjectName("quote_entry") + self.horizontalLayout_6.addWidget(self.quote_entry) + spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) + self.horizontalLayout_6.addItem(spacerItem5) + self.verticalLayout.addLayout(self.horizontalLayout_6) + self.horizontalLayout_5 = QtWidgets.QHBoxLayout() + self.horizontalLayout_5.setObjectName("horizontalLayout_5") + self.table_elsa_list = QtWidgets.QTableWidget(parent=Dialog) + self.table_elsa_list.setObjectName("table_elsa_list") + self.table_elsa_list.setColumnCount(12) + self.table_elsa_list.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.table_elsa_list.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.table_elsa_list.setHorizontalHeaderItem(1, item) + item = QtWidgets.QTableWidgetItem() + self.table_elsa_list.setHorizontalHeaderItem(2, item) + item = QtWidgets.QTableWidgetItem() + self.table_elsa_list.setHorizontalHeaderItem(3, item) + item = QtWidgets.QTableWidgetItem() + self.table_elsa_list.setHorizontalHeaderItem(4, item) + item = QtWidgets.QTableWidgetItem() + self.table_elsa_list.setHorizontalHeaderItem(5, item) + item = QtWidgets.QTableWidgetItem() + self.table_elsa_list.setHorizontalHeaderItem(6, item) + item = QtWidgets.QTableWidgetItem() + self.table_elsa_list.setHorizontalHeaderItem(7, item) + item = QtWidgets.QTableWidgetItem() + self.table_elsa_list.setHorizontalHeaderItem(8, item) + item = QtWidgets.QTableWidgetItem() + self.table_elsa_list.setHorizontalHeaderItem(9, item) + item = QtWidgets.QTableWidgetItem() + self.table_elsa_list.setHorizontalHeaderItem(10, item) + item = QtWidgets.QTableWidgetItem() + self.table_elsa_list.setHorizontalHeaderItem(11, item) + self.table_elsa_list.horizontalHeader().setDefaultSectionSize(85) + self.table_elsa_list.horizontalHeader().setMinimumSectionSize(31) + self.horizontalLayout_5.addWidget(self.table_elsa_list) + self.elsa_statistics = QtWidgets.QTabWidget(parent=Dialog) + self.elsa_statistics.setObjectName("elsa_statistics") + self.tab = QtWidgets.QWidget() + self.tab.setObjectName("tab") + self.horizontalLayout_7 = QtWidgets.QHBoxLayout(self.tab) + self.horizontalLayout_7.setObjectName("horizontalLayout_7") + self.elsa_statistics_table = QtWidgets.QTableWidget(parent=self.tab) + self.elsa_statistics_table.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOff) + self.elsa_statistics_table.setTextElideMode(QtCore.Qt.TextElideMode.ElideMiddle) + self.elsa_statistics_table.setObjectName("elsa_statistics_table") + self.elsa_statistics_table.setColumnCount(2) + self.elsa_statistics_table.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.elsa_statistics_table.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.elsa_statistics_table.setHorizontalHeaderItem(1, item) + self.elsa_statistics_table.horizontalHeader().setDefaultSectionSize(169) + self.horizontalLayout_7.addWidget(self.elsa_statistics_table) + self.elsa_statistics.addTab(self.tab, "") + self.horizontalLayout_5.addWidget(self.elsa_statistics) + self.horizontalLayout_5.setStretch(0, 7) + self.horizontalLayout_5.setStretch(1, 3) + self.verticalLayout.addLayout(self.horizontalLayout_5) + self.verticalLayout.setStretch(1, 1) + self.verticalLayout.setStretch(3, 2) + + self.retranslateUi(Dialog) + self.elsa_statistics.setCurrentIndex(0) + QtCore.QMetaObject.connectSlotsByName(Dialog) + + def retranslateUi(self, Dialog): + _translate = QtCore.QCoreApplication.translate + Dialog.setWindowTitle(_translate("Dialog", "Dialog")) + self.elsa_add_new.setText(_translate("Dialog", "Neuer Auftrag")) + self.elsa_cancel_create.setText(_translate("Dialog", "Abbrechen")) + item = self.elsa_table.horizontalHeaderItem(0) + item.setText(_translate("Dialog", "Professor")) + item = self.elsa_table.horizontalHeaderItem(1) + item.setText(_translate("Dialog", "Datum")) + item = self.elsa_table.horizontalHeaderItem(2) + item.setText(_translate("Dialog", "Semester")) + self.create_frame_elsa.setTitle(_translate("Dialog", "Auftragsdaten")) + self.label.setText(_translate("Dialog", "Professor")) + self.label_3.setText(_translate("Dialog", "Semester")) + self.label_2.setText(_translate("Dialog", "Auftragsdatum")) + self.elsa_save.setText(_translate("Dialog", "Speichern")) + self.elsa_update.setText(_translate("Dialog", "Aktualisieren")) + item = self.dokument_list_elsa.horizontalHeaderItem(0) + item.setText(_translate("Dialog", "Dokumentname")) + item = self.dokument_list_elsa.horizontalHeaderItem(1) + item.setText(_translate("Dialog", "Dateityp")) + item = self.dokument_list_elsa.horizontalHeaderItem(2) + item.setText(_translate("Dialog", "Neu?")) + self.btn_add_document_elsa.setText(_translate("Dialog", "Dokument hinzufügen")) + self.btn_open_document_elsa.setText(_translate("Dialog", "Dokument öffnen")) + self.check_file_elsa.setText(_translate("Dialog", "Medien aus Dokument\n" +"hinzufügen")) + self.quote_entry.setText(_translate("Dialog", " Eintrag zitieren ")) + item = self.table_elsa_list.horizontalHeaderItem(0) + item.setText(_translate("Dialog", "Autor(en) des Werks")) + item = self.table_elsa_list.horizontalHeaderItem(1) + item.setText(_translate("Dialog", "Autor(en) des Beitrags")) + item = self.table_elsa_list.horizontalHeaderItem(2) + item.setText(_translate("Dialog", "Jahr")) + item = self.table_elsa_list.horizontalHeaderItem(3) + item.setText(_translate("Dialog", "Heft")) + item = self.table_elsa_list.horizontalHeaderItem(4) + item.setText(_translate("Dialog", "Auflage")) + item = self.table_elsa_list.horizontalHeaderItem(5) + item.setText(_translate("Dialog", "Titel des Werks")) + item = self.table_elsa_list.horizontalHeaderItem(6) + item.setText(_translate("Dialog", "Beitragstitel")) + item = self.table_elsa_list.horizontalHeaderItem(7) + item.setText(_translate("Dialog", "Seiten")) + item = self.table_elsa_list.horizontalHeaderItem(8) + item.setText(_translate("Dialog", "Ort")) + item = self.table_elsa_list.horizontalHeaderItem(9) + item.setText(_translate("Dialog", "Verlag")) + item = self.table_elsa_list.horizontalHeaderItem(10) + item.setText(_translate("Dialog", "Signatur")) + item = self.table_elsa_list.horizontalHeaderItem(11) + item.setText(_translate("Dialog", "Art")) + item = self.elsa_statistics_table.horizontalHeaderItem(0) + item.setText(_translate("Dialog", "Semester")) + item = self.elsa_statistics_table.horizontalHeaderItem(1) + item.setText(_translate("Dialog", "Zugang")) + self.elsa_statistics.setTabText(self.elsa_statistics.indexOf(self.tab), _translate("Dialog", "Tabelle")) diff --git a/src/ui/widgets/widget_sources/admin_create_user.ui b/src/ui/widgets/widget_sources/admin_create_user.ui new file mode 100644 index 0000000..d66efa1 --- /dev/null +++ b/src/ui/widgets/widget_sources/admin_create_user.ui @@ -0,0 +1,74 @@ + + + Dialog + + + + 0 + 0 + 400 + 70 + + + + Dialog + + + + 10 + + + 6 + + + + + Nutzername + + + + + + + + + + Anlegen + + + + + + + Rolle + + + + + + + + + + true + + + + + + + Passwort + + + + + + + user_create_frame_username + user_frame_userrole + user_create_frame_password + user_frame_addUser + + + + diff --git a/src/ui/widgets/widget_sources/admin_edit_prof.ui b/src/ui/widgets/widget_sources/admin_edit_prof.ui new file mode 100644 index 0000000..2db4f2a --- /dev/null +++ b/src/ui/widgets/widget_sources/admin_edit_prof.ui @@ -0,0 +1,211 @@ + + + Dialog + + + Qt::ApplicationModal + + + + 0 + 0 + 540 + 281 + + + + Dialog + + + + + + Alte Angaben + + + + + + + + + true + + + + + + + + 0 + 0 + + + + true + + + + + + + Mail + + + + + + + Telefonnummer + + + + + + + + + + true + + + + + + + + + + + Qt::NoFocus + + + Löschen + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + Qt::NoFocus + + + Aktualisieren + + + + + + + + + Qt::Horizontal + + + + + + + 1 + + + Qt::Horizontal + + + + + + + + + Mail + + + + + + + + + + + + + Telefonnummer + + + + + + + Nachname + + + + + + + + + + + + + + + + Titel + + + + + + + Vorname + + + + + + + + + Neue Angaben + + + + + + + Qt::Vertical + + + + + + + Qt::Vertical + + + + + + + + diff --git a/src/ui/widgets/widget_sources/admin_edit_user.ui b/src/ui/widgets/widget_sources/admin_edit_user.ui new file mode 100644 index 0000000..c1d50cd --- /dev/null +++ b/src/ui/widgets/widget_sources/admin_edit_user.ui @@ -0,0 +1,76 @@ + + + Dialog + + + + 0 + 0 + 382 + 100 + + + + Dialog + + + + + + Rolle + + + + + + + + + + Nutzername + + + + + + + + + + + + + Passwort + + + + + + + + + Löschen? + + + + + + + Löschen + + + + + + + + + Aktualisieren + + + + + + + + diff --git a/src/ui/widgets/widget_sources/elsa_maindialog.ui b/src/ui/widgets/widget_sources/elsa_maindialog.ui new file mode 100644 index 0000000..1a41bf6 --- /dev/null +++ b/src/ui/widgets/widget_sources/elsa_maindialog.ui @@ -0,0 +1,427 @@ + + + Dialog + + + + 0 + 0 + 1237 + 848 + + + + Dialog + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Neuer Auftrag + + + + + + + false + + + Abbrechen + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + Qt::ScrollBarAlwaysOff + + + 374 + + + + Professor + + + + + Datum + + + + + Semester + + + + + + + + + + Auftragsdaten + + + false + + + + + + + + Professor + + + + + + + + + + + + + false + + + false + + + true + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + false + + + false + + + true + + + + + + + Semester + + + + + + + Auftragsdatum + + + + + + + + + + + + Speichern + + + + + + + Aktualisieren + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::ScrollBarAlwaysOff + + + 43 + + + 116 + + + 25 + + + + Dokumentname + + + + + Dateityp + + + + + Neu? + + + + + + + + 10 + + + + + Dokument hinzufügen + + + + + + + Dokument öffnen + + + + + + + Medien aus Dokument +hinzufügen + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + Eintrag zitieren + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + 31 + + + 85 + + + + Autor(en) des Werks + + + + + Autor(en) des Beitrags + + + + + Jahr + + + + + Heft + + + + + Auflage + + + + + Titel des Werks + + + + + Beitragstitel + + + + + Seiten + + + + + Ort + + + + + Verlag + + + + + Signatur + + + + + Art + + + + + + + + 0 + + + + Tabelle + + + + + + Qt::ScrollBarAlwaysOff + + + Qt::ElideMiddle + + + 169 + + + + Semester + + + + + Zugang + + + + + + + + + + + + + + +