New docx templates
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
from PyQt6.QtGui import QPageSize
|
||||
from PyQt6.QtPrintSupport import QPrinter
|
||||
from PyQt6.QtWidgets import (QDialog, QPushButton, QVBoxLayout, QMessageBox,
|
||||
QDialogButtonBox, QTextEdit)
|
||||
from PyQt6.QtWebEngineWidgets import QWebEngineView
|
||||
@@ -17,6 +19,8 @@ from pprint import pformat
|
||||
from html2image import Html2Image
|
||||
from PIL import Image
|
||||
from typing import List
|
||||
from backend.excel.writer import DocxWriter
|
||||
|
||||
|
||||
|
||||
logger = logging.getLogger(f"submissions.{__name__}")
|
||||
@@ -90,13 +94,17 @@ class SubmissionDetails(QDialog):
|
||||
# del self.base_dict['id']
|
||||
# logger.debug(f"Creating barcode.")
|
||||
# logger.debug(f"Making platemap...")
|
||||
|
||||
self.base_dict['platemap'] = BasicSubmission.make_plate_map(sample_list=submission.hitpick_plate())
|
||||
self.base_dict, self.template = submission.get_details_template(base_dict=self.base_dict)
|
||||
template_path = Path(self.template.environment.loader.__getattribute__("searchpath")[0])
|
||||
with open(template_path.joinpath("css", "styles.css"), "r") as f:
|
||||
css = f.read()
|
||||
logger.debug(f"Submission_details: {pformat(self.base_dict)}")
|
||||
self.html = self.template.render(sub=self.base_dict, signing_permission=is_power_user())
|
||||
self.html = self.template.render(sub=self.base_dict, signing_permission=is_power_user(), css=css)
|
||||
self.webview.setHtml(self.html)
|
||||
# with open("test.html", "w") as f:
|
||||
# f.write(self.html)
|
||||
with open("test.html", "w") as f:
|
||||
f.write(self.html)
|
||||
self.setWindowTitle(f"Submission Details - {submission.rsl_plate_num}")
|
||||
|
||||
@pyqtSlot(str)
|
||||
@@ -112,31 +120,32 @@ class SubmissionDetails(QDialog):
|
||||
"""
|
||||
Renders submission to html, then creates and saves .pdf file to user selected file.
|
||||
"""
|
||||
logger.debug(f"Base dict: {pformat(self.base_dict)}")
|
||||
writer = DocxWriter(base_dict=self.base_dict)
|
||||
fname = select_save_file(obj=self, default_name=self.base_dict['plate_number'], extension="docx")
|
||||
image_io = BytesIO()
|
||||
temp_dir = Path(TemporaryDirectory().name)
|
||||
hti = Html2Image(output_path=temp_dir, size=(2400, 1500))
|
||||
temp_file = Path(TemporaryFile(dir=temp_dir, suffix=".png").name)
|
||||
screenshot = hti.screenshot(self.base_dict['platemap'], save_as=temp_file.name)
|
||||
export_map = Image.open(screenshot[0])
|
||||
export_map = export_map.convert('RGB')
|
||||
writer.save(fname)
|
||||
# image_io = BytesIO()
|
||||
# temp_dir = Path(TemporaryDirectory().name)
|
||||
# hti = Html2Image(output_path=temp_dir, size=(2400, 1500))
|
||||
# temp_file = Path(TemporaryFile(dir=temp_dir, suffix=".png").name)
|
||||
# screenshot = hti.screenshot(self.base_dict['platemap'], save_as=temp_file.name)
|
||||
# export_map = Image.open(screenshot[0])
|
||||
# export_map = export_map.convert('RGB')
|
||||
# try:
|
||||
# export_map.save(image_io, 'JPEG')
|
||||
# except AttributeError:
|
||||
# logger.error(f"No plate map found")
|
||||
# self.base_dict['export_map'] = base64.b64encode(image_io.getvalue()).decode('utf-8')
|
||||
# del self.base_dict['platemap']
|
||||
# self.html2 = self.template.render(sub=self.base_dict)
|
||||
try:
|
||||
export_map.save(image_io, 'JPEG')
|
||||
except AttributeError:
|
||||
logger.error(f"No plate map found")
|
||||
self.base_dict['export_map'] = base64.b64encode(image_io.getvalue()).decode('utf-8')
|
||||
del self.base_dict['platemap']
|
||||
self.html2 = self.template.render(sub=self.base_dict)
|
||||
try:
|
||||
html_to_pdf(html=self.html2, output_file=fname)
|
||||
html_to_pdf(html=self.html, output_file=fname)
|
||||
except PermissionError as e:
|
||||
logger.error(f"Error saving pdf: {e}")
|
||||
msg = QMessageBox()
|
||||
msg.setText("Permission Error")
|
||||
msg.setInformativeText(f"Looks like {fname.__str__()} is open.\nPlease close it and try again.")
|
||||
msg.setWindowTitle("Permission Error")
|
||||
msg.exec()
|
||||
# msg = QMessageBox()
|
||||
# msg.setText("Permission Error")
|
||||
# msg.setInformativeText(f"Looks like {fname.__str__()} is open.\nPlease close it and try again.")
|
||||
# msg.setWindowTitle("Permission Error")
|
||||
# msg.exec()
|
||||
|
||||
|
||||
class SubmissionComment(QDialog):
|
||||
|
||||
Reference in New Issue
Block a user