From: Agnibho Mondal Date: Fri, 10 Nov 2023 19:23:54 +0000 (+0530) Subject: Render exception handling X-Git-Tag: v0.5~19 X-Git-Url: https://code.agnibho.com/repo?a=commitdiff_plain;h=d53cbf7817961ed7727d5858481b91c735e44283;p=medscript.git Render exception handling --- diff --git a/renderbox.py b/renderbox.py index 5da2704..81bf9c1 100644 --- a/renderbox.py +++ b/renderbox.py @@ -18,14 +18,20 @@ class RenderBox(QMainWindow): file="" def cmd_pdf(self): - file=QFileDialog.getSaveFileName(self, "Save PDF", os.path.abspath(os.path.join(config["document_directory"], ".pdf")), "PDF (*.pdf);; All Files (*)") - page=QPageSize(QPageSize.PageSizeId[self.input_size.currentText()]) - self.webview.printToPdf(file[0], QPageLayout(page, QPageLayout.Orientation.Portrait, QMarginsF())) + try: + file=QFileDialog.getSaveFileName(self, "Save PDF", os.path.abspath(os.path.join(config["document_directory"], ".pdf")), "PDF (*.pdf);; All Files (*)") + page=QPageSize(QPageSize.PageSizeId[self.input_size.currentText()]) + self.webview.printToPdf(file[0], QPageLayout(page, QPageLayout.Orientation.Portrait, QMarginsF())) + except Exception as e: + logging.exception(e) def cmd_print(self): - dialog=QPrintDialog(self.printer) - if(dialog.exec()): - self.webview.print(self.printer) + try: + dialog=QPrintDialog(self.printer) + if(dialog.exec()): + self.webview.print(self.printer) + except Exception as e: + logging.exception(e) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/renderer.py b/renderer.py index 2cde157..05bc99a 100644 --- a/renderer.py +++ b/renderer.py @@ -15,24 +15,27 @@ class Renderer: tempdir=None def render(self, data_directory): - source=os.path.join(data_directory, "prescription.json") - target=os.path.join(data_directory, "template", "output.html") - template=os.path.join(data_directory, "template", "index.html") - if not os.path.exists(template): - shutil.copytree(config["template"], os.path.join(data_directory, "template"), dirs_exist_ok=True) - with open(source, "r") as source_file, open(target, "w") as target_file: - with open(template) as template_file: - template_data = Template(template_file.read()) - data=self.process_medication(self.process_diagnosis(json.loads(source_file.read()))) - if config["markdown"]: - data=self.render_markdown(data) - try: - data["date"]=datetime.datetime.strptime(data["date"], "%Y-%m-%d %H:%M:%S") - except Exception as e: - logging.exception(e) - output=template_data.render(data) - target_file.write(output) - return(target) + try: + source=os.path.join(data_directory, "prescription.json") + target=os.path.join(data_directory, "template", "output.html") + template=os.path.join(data_directory, "template", "index.html") + if not os.path.exists(template): + shutil.copytree(config["template"], os.path.join(data_directory, "template"), dirs_exist_ok=True) + with open(source, "r") as source_file, open(target, "w") as target_file: + with open(template) as template_file: + template_data = Template(template_file.read()) + data=self.process_medication(self.process_diagnosis(json.loads(source_file.read()))) + if config["markdown"]: + data=self.render_markdown(data) + try: + data["date"]=datetime.datetime.strptime(data["date"], "%Y-%m-%d %H:%M:%S") + except Exception as e: + logging.exception(e) + output=template_data.render(data) + target_file.write(output) + return(target) + except Exception as e: + logging.exception(e) def process_diagnosis(self, data): diagnosis_list=[] diff --git a/window.py b/window.py index 0e92e98..6ea5cf1 100644 --- a/window.py +++ b/window.py @@ -139,12 +139,15 @@ class MainWindow(QMainWindow): if(self.save_state==md5(self.prescription.get_json().encode()).hexdigest()): try: target=self.renderer.render(self.current_file.directory.name) - self.signal_view.emit(target) - self.renderbox.showMaximized() + if target is not None: + self.signal_view.emit(target) + self.renderbox.showMaximized() + else: + QMessageBox.critical(self, "Render failed", "Presciption rendering failed. Please check if prescription file or template is corrupted.") + logging.error("Prescription rendering failed.") except FileNotFoundError as e: logging.warning(e) QMessageBox.information(self, "Save first", "Please save the file before rendering.") - else: QMessageBox.information(self, "Save first", "Please save the file before rendering.")