Writer and manager updates.

This commit is contained in:
lwark
2025-07-22 13:15:24 -05:00
parent 53c6668ce1
commit b9ca9586ec
21 changed files with 661 additions and 329 deletions

View File

@@ -5,6 +5,7 @@ from __future__ import annotations
import datetime
import os
import re
import sys, logging
from pathlib import Path
from pprint import pformat
@@ -81,6 +82,8 @@ class ProcedureCreation(QDialog):
equipmentrole['equipment'].index(item_in_er_list)))
proceduretype_dict['equipment_section'] = EquipmentUsage.construct_html(procedure=self.procedure, child=True)
self.update_equipment = EquipmentUsage.update_equipment
regex = re.compile(r".*R\d$")
proceduretype_dict['previous'] = [""] + [item.name for item in self.run.procedure if item.proceduretype == self.proceduretype and not bool(regex.match(item.name))]
html = render_details_template(
template_name="procedure_creation",
# css_in=['new_context_menu'],
@@ -91,8 +94,8 @@ class ProcedureCreation(QDialog):
plate_map=self.plate_map,
edit=self.edit
)
with open("procedure_creation_rendered.html", "w") as f:
f.write(html)
# with open("procedure_creation_rendered.html", "w") as f:
# f.write(html)
self.webview.setHtml(html)
@pyqtSlot(str, str, str, str)
@@ -127,11 +130,18 @@ class ProcedureCreation(QDialog):
setattr(self.procedure.run, key, new_value)
case _:
attribute = getattr(self.procedure, key)
attribute['value'] = new_value.strip('\"')
match attribute:
case dict():
attribute['value'] = new_value.strip('\"')
case _:
setattr(self.procedure, key, new_value.strip('\"'))
logger.debug(f"Set value for {key}: {getattr(self.procedure, key)}")
@pyqtSlot(str, bool)
def check_toggle(self, key: str, ischecked: bool):
# logger.debug(f"{key} is checked: {ischecked}")
logger.debug(f"{key} is checked: {ischecked}")
setattr(self.procedure, key, ischecked)
@pyqtSlot(str)
@@ -159,7 +169,7 @@ class ProcedureCreation(QDialog):
self.set_html()
@pyqtSlot(str, str)
def update_reagent(self, reagentrole:str, name_lot_expiry:str):
def update_reagent(self, reagentrole: str, name_lot_expiry: str):
try:
name, lot, expiry = name_lot_expiry.split(" - ")
except ValueError as e:
@@ -167,8 +177,8 @@ class ProcedureCreation(QDialog):
return
self.procedure.update_reagents(reagentrole=reagentrole, name=name, lot=lot, expiry=expiry)
def return_sql(self):
return self.procedure.to_sql()
def return_sql(self, new: bool = False):
return self.procedure.to_sql(new=new)
# class ProcedureWebViewer(QWebEngineView):
#

View File

@@ -8,7 +8,7 @@ from PyQt6.QtWebChannel import QWebChannel
from PyQt6.QtCore import Qt, pyqtSlot
from jinja2 import TemplateNotFound
from backend.db.models import Run, Sample, Reagent, KitType, Equipment, Process, Tips
from tools import is_power_user, jinja_template_loading, timezone, get_application_from_parent
from tools import is_power_user, jinja_template_loading, timezone, get_application_from_parent, list_str_comparator
from .functions import select_save_file, save_pdf
from pathlib import Path
import logging
@@ -50,14 +50,6 @@ class SubmissionDetails(QDialog):
# NOTE: setup channel
self.channel = QWebChannel()
self.channel.registerObject('backend', self)
# match sub:
# case Run():
# self.run_details(run=sub)
# self.rsl_plate_number = sub.rsl_plate_number
# case Sample():
# self.sample_details(sample=sub)
# case Reagent():
# self.reagent_details(reagent=sub)
# NOTE: Used to maintain javascript functions.
self.object_details(object=sub)
self.webview.page().setWebChannel(self.channel)
@@ -75,8 +67,8 @@ class SubmissionDetails(QDialog):
self.webview.setHtml(html)
self.setWindowTitle(f"{object.__class__.__name__} Details - {object.name}")
with open(f"{object.__class__.__name__}_details_rendered.html", "w") as f:
f.write(html)
# f.write(html)
pass
def activate_export(self) -> None:
@@ -88,11 +80,11 @@ class SubmissionDetails(QDialog):
"""
title = self.webview.title()
self.setWindowTitle(title)
if "Submission" in title:
if list_str_comparator(title, ['ClientSubmission', "Run", "Procedure"], mode="starts_with"):
self.btn.setEnabled(True)
self.export_plate = title.split(" ")[-1]
else:
self.btn.setEnabled(False)
self.export_plate = title
try:
check = self.webview.history().items()[0].title()
except IndexError as e: