fix some bugs, add mail template emit signal to update list

This commit is contained in:
2025-02-06 15:36:04 +01:00
parent 4d1fc94ffa
commit 709a342230
6 changed files with 472 additions and 679 deletions

View File

@@ -1,14 +1,14 @@
import os
from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtGui import QFont
from PyQt6 import QtGui, QtWidgets, QtCore
from src import Icon
from .dialog_sources import NewMailTemplateDesignerDialog
from src import logger
class MailTemplateDialog(QtWidgets.QDialog, NewMailTemplateDesignerDialog):
updateSignal = QtCore.pyqtSignal()
def __init__(self, parent=None) -> None:
super().__init__(parent)
self.setupUi(self)
@@ -37,7 +37,7 @@ class MailTemplateDialog(QtWidgets.QDialog, NewMailTemplateDesignerDialog):
self.buttonBox.button(
QtWidgets.QDialogButtonBox.StandardButton.Cancel
).clicked.connect(self.closeNow)
logger.info("Mail template dialog setup complete")
def save_template(self):
# print("save triggered")
# create a dialog to ask for the name of the template
@@ -50,9 +50,11 @@ class MailTemplateDialog(QtWidgets.QDialog, NewMailTemplateDesignerDialog):
dialog.setWindowIcon(Icon("save").icon)
save = dialog.exec()
template_name = dialog.textValue()
logger.info("Saving template")
if template_name != "" and save == 1:
template = template_name + ".eml"
if template in os.listdir("mail_vorlagen"):
logger.error("Template already exists")
# warning dialog
dialog = QtWidgets.QMessageBox()
dialog.setIcon(QtWidgets.QMessageBox.Icon.Warning)
@@ -69,28 +71,30 @@ class MailTemplateDialog(QtWidgets.QDialog, NewMailTemplateDesignerDialog):
ret = dialog.exec()
if ret == QtWidgets.QMessageBox.StandardButton.No:
return
mail = f"""Subject: {self.subject.text()}
mail = f"""Subject: {self.subject.text()}
MIME-Version: 1.0
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: 8bit
{self.templateEdit.toHtml()}"""
html_head = """<html>
html_head = """<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
"""
mail_base = mail.split("<html>")[0]
mail_body = mail.split("</head>")[1]
mail = mail_base + html_head + mail_body
mail = (
mail.replace("&lt;", "<")
.replace("&gt;", ">")
.replace("&quot;", '"')
.replace("&amp;", "&")
)
with open(f"mail_vorlagen/{template}", "w") as f:
f.write(mail)
self.close()
mail_base = mail.split("<html>")[0]
mail_body = mail.split("</head>")[1]
mail = mail_base + html_head + mail_body
mail = (
mail.replace("&lt;", "<")
.replace("&gt;", ">")
.replace("&quot;", '"')
.replace("&amp;", "&")
)
with open(f"mail_vorlagen/{template}", "w", encoding="utf-8") as f:
f.write(mail)
self.updateSignal.emit()
self.close()
logger.success(f"Template {template} saved successfully")
else:
# warning dialog
dialog = QtWidgets.QMessageBox()