This commit is contained in:
WorldTeacher
2024-06-28 10:14:07 +02:00
parent 1b14d09bf0
commit 6fa3e18f22
10 changed files with 109 additions and 66 deletions

View File

@@ -1,6 +1,11 @@
default_apps: true
save_path: ~/Desktop/semap/db/temp/
icon_path: icons/
zotero:
api_key:
library_id: ""
library_type: user
custom_applications:
- name: Text files
extensions:
@@ -27,13 +32,31 @@ custom_applications:
- xls
application: Excel
database:
name: semap.db
name: test.sam
path: ~\Desktop\semap\db\
tempdir: ~\Desktop\semap\db\temp\
mail:
smtp_server:
port:
sender:
user_name:
use_user_name:
password:
smtp_server: ''
port: 0
sender: ''
user_name: ''
use_user_name: false
password: ''
signature: '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style
type="text/css">
p, li { white-space: pre-wrap; }
hr { height: 1px; border-width: 0; }
li.unchecked::marker { content: "\2610"; }
li.checked::marker { content: "\2612"; }
</style></head><body style=" font-family:''Segoe UI''; font-size:9pt; font-weight:400;
font-style:normal;">
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>'

View File

@@ -1,6 +1,7 @@
__version__ = "0.1.0"
__version__ = "1.0.0"
__author__ = "Alexander Kirchner"
from .logic.log import MyLogger
from .utils.icon import Icon
from .ui.userInterface import launch_gui as UI

View File

@@ -148,8 +148,8 @@ class Database:
conn = self.connect()
cursor = conn.cursor()
log_message = f"Querying database with query {query}, args: {args}"
if "INSERT" in query:
log_message = f"Querying database with query {query}"
# if "INSERT" in query:
# log_message = f"Querying database with query {query}"
self.logger.log_info(log_message)
@@ -661,7 +661,10 @@ class Database:
data = self.getProfByName(prof_name.replace(",", ""))
if data is None:
return None
# get last used id and return id + 1
profno = self.query_db("SELECT id FROM prof ORDER BY id DESC", one=True)[0]
return profno + 1
# return None
else:
return data[0]

View File

@@ -7,3 +7,4 @@ from .dataclass import ApparatData, BookData
from .csvparser import csv_to_list
from .wordparser import elsa_word_to_csv, word_docx_to_csv
from .log import MyLogger
from .zotero import ZoteroController

View File

@@ -7,7 +7,8 @@ def csv_to_list(path: str) -> list[str]:
"""
Extracts the data from a csv file and returns it as a pandas dataframe
"""
with open(path, newline="") as csvfile:
with open(path, newline="", encoding="utf-8") as csvfile:
# if decoder fails to map, assign ""
reader = csv.reader(csvfile, delimiter=";", quotechar="|")
ret = []
for row in reader:

View File

@@ -1118,9 +1118,6 @@ class Ui_MainWindow(object):
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.reset_selection = QtWidgets.QToolButton(parent=self.admin)
self.reset_selection.setGeometry(QtCore.QRect(250, 30, 22, 22))
self.reset_selection.setObjectName("reset_selection")
self.tabWidget.addTab(self.admin, "")
self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1)
self.horizontalLayout.addLayout(self.gridLayout)
@@ -1309,11 +1306,10 @@ class Ui_MainWindow(object):
self.retranslateUi(MainWindow)
self.tabWidget.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
MainWindow.setTabOrder(self.drpdwn_app_nr, self.prof_title)
MainWindow.setTabOrder(self.prof_title, self.drpdwn_prof_name)
MainWindow.setTabOrder(self.drpdwn_prof_name, self.prof_tel_nr)
MainWindow.setTabOrder(self.prof_tel_nr, self.prof_mail)
MainWindow.setTabOrder(self.prof_mail, self.app_name)
MainWindow.setTabOrder(self.drpdwn_app_nr, self.drpdwn_prof_name)
MainWindow.setTabOrder(self.drpdwn_prof_name, self.prof_mail)
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)
@@ -1363,15 +1359,10 @@ class Ui_MainWindow(object):
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.reset_selection)
MainWindow.setTabOrder(self.reset_selection, self.valid_check_app_fach)
MainWindow.setTabOrder(self.valid_check_app_fach, self.edit_faculty_member_new_surname)
MainWindow.setTabOrder(self.edit_faculty_member_new_surname, self.valid_check_profname)
MainWindow.setTabOrder(self.valid_check_profname, self.valid_check_appname)
MainWindow.setTabOrder(self.valid_check_appname, self.valid_check_semester)
MainWindow.setTabOrder(self.valid_check_semester, self.valid_check_mail)
MainWindow.setTabOrder(self.valid_check_mail, self.valid_check_telnr)
MainWindow.setTabOrder(self.valid_check_telnr, self.edit_faculty_member_new_title)
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
@@ -1548,7 +1539,6 @@ class Ui_MainWindow(object):
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.reset_selection.setText(_translate("MainWindow", "..."))
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"))

View File

@@ -257,6 +257,7 @@ class Ui_Dialog(object):
self.label_32.setObjectName("label_32")
self.gridLayout_5.addWidget(self.label_32, 0, 0, 1, 1)
self.file_desc_edit = QtWidgets.QTextEdit(parent=self.page)
self.file_desc_edit.setReadOnly(True)
self.file_desc_edit.setObjectName("file_desc_edit")
self.gridLayout_5.addWidget(self.file_desc_edit, 5, 0, 1, 1)
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
@@ -273,12 +274,14 @@ class Ui_Dialog(object):
self.label_33.setObjectName("label_33")
self.gridLayout_5.addWidget(self.label_33, 4, 0, 1, 1)
self.filename_edit = QtWidgets.QTextEdit(parent=self.page)
self.filename_edit.setReadOnly(True)
self.filename_edit.setObjectName("filename_edit")
self.gridLayout_5.addWidget(self.filename_edit, 1, 0, 1, 1)
self.label_34 = QtWidgets.QLabel(parent=self.page)
self.label_34.setObjectName("label_34")
self.gridLayout_5.addWidget(self.label_34, 2, 0, 1, 1)
self.ilias_filename = QtWidgets.QTextEdit(parent=self.page)
self.ilias_filename.setReadOnly(True)
self.ilias_filename.setObjectName("ilias_filename")
self.gridLayout_5.addWidget(self.ilias_filename, 3, 0, 1, 1)
self.copy_ilias_filename = QtWidgets.QToolButton(parent=self.page)
@@ -293,7 +296,7 @@ class Ui_Dialog(object):
self.verticalLayout.addWidget(self.buttonBox)
self.retranslateUi(Dialog)
self.stackedWidget.setCurrentIndex(0)
self.stackedWidget.setCurrentIndex(3)
self.buttonBox.accepted.connect(Dialog.accept) # type: ignore
self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(Dialog)

View File

@@ -110,7 +110,7 @@
<item>
<widget class="QStackedWidget" name="stackedWidget">
<property name="currentIndex">
<number>0</number>
<number>3</number>
</property>
<widget class="QWidget" name="mono">
<layout class="QGridLayout" name="gridLayout_2">
@@ -457,7 +457,11 @@ Nachname, Vorname</string>
</widget>
</item>
<item row="5" column="0">
<widget class="QTextEdit" name="file_desc_edit"/>
<widget class="QTextEdit" name="file_desc_edit">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="6" column="0">
<spacer name="verticalSpacer">
@@ -500,7 +504,11 @@ Nachname, Vorname</string>
</widget>
</item>
<item row="1" column="0">
<widget class="QTextEdit" name="filename_edit"/>
<widget class="QTextEdit" name="filename_edit">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_34">
@@ -510,7 +518,11 @@ Nachname, Vorname</string>
</widget>
</item>
<item row="3" column="0">
<widget class="QTextEdit" name="ilias_filename"/>
<widget class="QTextEdit" name="ilias_filename">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QToolButton" name="copy_ilias_filename">

View File

@@ -6,6 +6,24 @@ from src import Icon
from .dialog_sources.settings_ui import Ui_Dialog as _settings
config = OmegaConf.load("config.yaml")
base = """'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style
type="text/css">
p, li { white-space: pre-wrap; }
hr { height: 1px; border-width: 0; }
li.unchecked::marker { content: "\2610"; }
li.checked::marker { content: "\2612"; }
</style></head><body style=" font-family:''Segoe UI''; font-size:9pt; font-weight:400;
font-style:normal;">
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>'"""
class Settings(QtWidgets.QDialog, _settings):
@@ -21,7 +39,7 @@ class Settings(QtWidgets.QDialog, _settings):
self.underscore.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
self.font_size.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
self.fontComboBox.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
self.setWindowIcon(Icon("settings").icon)
self.font_size.setCurrentText("9")
# add button to toggle password visibility
if user == "admin":
@@ -52,7 +70,9 @@ class Settings(QtWidgets.QDialog, _settings):
self.sender_email.setText(config.mail.sender)
self.mail_username.setText(config.mail.user_name)
self.password.setText(config.mail.password)
self.use_username_smtp_login.setChecked(config.mail.use_user_name)
self.use_username_smtp_login.setChecked(
config.mail.use_user_name if config.mail.use_user_name else False
)
self.editSignature.setHtml(config.mail.signature)
def setCurrentFont(self):
@@ -66,17 +86,15 @@ class Settings(QtWidgets.QDialog, _settings):
def toggle_password(self):
self.togglePassword.setIconSize(QtCore.QSize(16, 16))
on_icon = Icon("hide_password")
off_icon = Icon("show_password")
if self.showPassword is False:
self.password.setEchoMode(QtWidgets.QLineEdit.EchoMode.Normal)
off_icon.set_icon(self.togglePassword)
Icon("show_password", self.togglePassword)
self.showPassword = True
else:
self.password.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)
on_icon.set_icon(self.togglePassword)
Icon("hide_password", self.togglePassword)
self.showPassword = False
def setFontBold(self):
@@ -121,16 +139,26 @@ class Settings(QtWidgets.QDialog, _settings):
print(self.editSignature.toHtml())
def return_data(self):
port = self.smtp_port.text()
if port != "None":
port = int(port)
else:
port = 0
signature = self.editSignature.toHtml()
if signature != base:
signature = signature
else:
signature = ""
config.database.name = self.db_name.text()
config.database.path = self.db_path.text()
config.save_path = self.save_path.text()
config.mail.smtp_server = self.smtp_address.text()
config.mail.port = int(self.smtp_port.text())
config.mail.port = port
config.mail.sender = self.sender_email.text()
config.mail.user_name = self.mail_username.text()
config.mail.password = self.password.text()
config.mail.use_user_name = self.use_username_smtp_login.isChecked()
config.mail.signature = self.editSignature.toHtml()
config.mail.signature = signature
return config
@@ -144,6 +172,6 @@ def launch_settings():
import sys
app = QtWidgets.QApplication(sys.argv)
window = Settings()
window = Settings("admin")
window.show()
sys.exit(app.exec())

View File

@@ -2766,19 +2766,6 @@
</item>
</layout>
</widget>
<widget class="QToolButton" name="reset_selection">
<property name="geometry">
<rect>
<x>250</x>
<y>30</y>
<width>22</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</widget>
</widget>
</item>
@@ -3135,10 +3122,9 @@
</widget>
<tabstops>
<tabstop>drpdwn_app_nr</tabstop>
<tabstop>prof_title</tabstop>
<tabstop>drpdwn_prof_name</tabstop>
<tabstop>prof_tel_nr</tabstop>
<tabstop>prof_mail</tabstop>
<tabstop>prof_tel_nr</tabstop>
<tabstop>app_name</tabstop>
<tabstop>app_fach</tabstop>
<tabstop>sem_winter</tabstop>
@@ -3189,15 +3175,10 @@
<tabstop>elsa_cancel_create</tabstop>
<tabstop>elsa_add_new</tabstop>
<tabstop>elsa_table</tabstop>
<tabstop>reset_selection</tabstop>
<tabstop>valid_check_app_fach</tabstop>
<tabstop>edit_faculty_member_new_surname</tabstop>
<tabstop>valid_check_profname</tabstop>
<tabstop>valid_check_appname</tabstop>
<tabstop>valid_check_semester</tabstop>
<tabstop>valid_check_mail</tabstop>
<tabstop>valid_check_telnr</tabstop>
<tabstop>edit_faculty_member_new_title</tabstop>
<tabstop>elsa_update</tabstop>
<tabstop>quote_entry</tabstop>
</tabstops>
<resources>
<include location="../../resources.qrc"/>