]> Softwares of Agnibho - medscript.git/commitdiff
Render exception handling
authorAgnibho Mondal <mondal@agnibho.com>
Fri, 10 Nov 2023 19:23:54 +0000 (00:53 +0530)
committerAgnibho Mondal <mondal@agnibho.com>
Fri, 10 Nov 2023 19:23:54 +0000 (00:53 +0530)
renderbox.py
renderer.py
window.py

index 5da27040635c12fc3a4d02cb3e58b8c5df3cf692..81bf9c1323b0802603b6b8f5ff585d46bf0a3825 100644 (file)
@@ -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)
index 2cde157adc5a17edcfaa4ff05e16b5d75c3ac603..05bc99a85a889b3a4a8f73e4fa88556b005f538e 100644 (file)
@@ -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=[]
index 0e92e98d8caf503c1e5f4a7057f9c961d9d239c5..6ea5cf15ccfe4db3a740abb94950cff4de9ed9ac 100644 (file)
--- 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.")