MVP working (AFAIK)
This commit is contained in:
@@ -2,25 +2,19 @@
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
import sys, logging, os, re, datetime
|
||||||
import datetime
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
import sys, logging
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from pprint import pformat
|
from pprint import pformat
|
||||||
|
|
||||||
from PyQt6.QtCore import pyqtSlot, Qt
|
from PyQt6.QtCore import pyqtSlot, Qt
|
||||||
from PyQt6.QtGui import QContextMenuEvent, QAction
|
from PyQt6.QtGui import QContextMenuEvent, QAction
|
||||||
from PyQt6.QtWebChannel import QWebChannel
|
from PyQt6.QtWebChannel import QWebChannel
|
||||||
from PyQt6.QtWebEngineWidgets import QWebEngineView
|
from PyQt6.QtWebEngineWidgets import QWebEngineView
|
||||||
from PyQt6.QtWidgets import QDialog, QGridLayout, QMenu, QDialogButtonBox
|
from PyQt6.QtWidgets import QDialog, QGridLayout, QMenu, QDialogButtonBox
|
||||||
from typing import TYPE_CHECKING, Any, List
|
from typing import TYPE_CHECKING, Any, List
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from backend.db.models import Run, Procedure
|
from backend.db.models import Run, Procedure
|
||||||
from backend.validators import PydProcedure, PydEquipment
|
from backend.validators import PydProcedure, PydEquipment
|
||||||
from tools import jinja_template_loading, get_application_from_parent, render_details_template, sanitize_object_for_json
|
from tools import get_application_from_parent, render_details_template, sanitize_object_for_json
|
||||||
|
|
||||||
logger = logging.getLogger(f"submissions.{__name__}")
|
logger = logging.getLogger(f"submissions.{__name__}")
|
||||||
|
|
||||||
@@ -32,26 +26,18 @@ class ProcedureCreation(QDialog):
|
|||||||
self.edit = edit
|
self.edit = edit
|
||||||
self.run = procedure.run
|
self.run = procedure.run
|
||||||
self.procedure = procedure
|
self.procedure = procedure
|
||||||
logger.debug(f"procedure: {pformat(self.procedure.__dict__)}")
|
# logger.debug(f"procedure: {pformat(self.procedure.__dict__)}")
|
||||||
self.proceduretype = procedure.proceduretype
|
self.proceduretype = procedure.proceduretype
|
||||||
self.setWindowTitle(f"New {self.proceduretype.name} for {self.run.rsl_plate_number}")
|
self.setWindowTitle(f"New {self.proceduretype.name} for {self.run.rsl_plate_number}")
|
||||||
# self.created_procedure = self.proceduretype.construct_dummy_procedure(run=self.run)
|
|
||||||
# self.procedure.update_kittype_reagentroles(kittype=self.procedure.possible_kits[0])
|
|
||||||
|
|
||||||
# self.created_procedure.samples = self.run.constuct_sample_dicts_for_proceduretype(proceduretype=self.proceduretype)
|
|
||||||
# logger.debug(f"Samples to map\n{pformat(self.created_procedure.samples)}")
|
|
||||||
self.plate_map = self.proceduretype.construct_plate_map(sample_dicts=self.procedure.sample)
|
self.plate_map = self.proceduretype.construct_plate_map(sample_dicts=self.procedure.sample)
|
||||||
self.procedure.update_samples(sample_list=[dict(sample_id=sample.sample_id, index=iii) for iii, sample in
|
self.procedure.update_samples(sample_list=[dict(sample_id=sample.sample_id, index=iii) for iii, sample in
|
||||||
enumerate(self.procedure.sample, start=1)])
|
enumerate(self.procedure.sample, start=1)])
|
||||||
# logger.debug(f"Plate map: {self.plate_map}")
|
|
||||||
# logger.debug(f"Created dummy: {self.created_procedure}")
|
|
||||||
self.app = get_application_from_parent(parent)
|
self.app = get_application_from_parent(parent)
|
||||||
self.webview = QWebEngineView(parent=self)
|
self.webview = QWebEngineView(parent=self)
|
||||||
self.webview.setContextMenuPolicy(Qt.ContextMenuPolicy.NoContextMenu)
|
self.webview.setContextMenuPolicy(Qt.ContextMenuPolicy.NoContextMenu)
|
||||||
self.webview.setMinimumSize(1200, 800)
|
self.webview.setMinimumSize(1200, 800)
|
||||||
self.webview.setMaximumWidth(1200)
|
self.webview.setMaximumWidth(1200)
|
||||||
# NOTE: Decide if exporting should be allowed.
|
# NOTE: Decide if exporting should be allowed.
|
||||||
# self.webview.loadFinished.connect(self.activate_export)
|
|
||||||
self.layout = QGridLayout()
|
self.layout = QGridLayout()
|
||||||
# NOTE: button to export a pdf version
|
# NOTE: button to export a pdf version
|
||||||
self.layout.addWidget(self.webview, 1, 0, 10, 10)
|
self.layout.addWidget(self.webview, 1, 0, 10, 10)
|
||||||
@@ -71,10 +57,7 @@ class ProcedureCreation(QDialog):
|
|||||||
|
|
||||||
def set_html(self):
|
def set_html(self):
|
||||||
from .equipment_usage_2 import EquipmentUsage
|
from .equipment_usage_2 import EquipmentUsage
|
||||||
# logger.debug(f"Edit: {self.edit}")
|
|
||||||
proceduretype_dict = self.proceduretype.details_dict()
|
proceduretype_dict = self.proceduretype.details_dict()
|
||||||
# logger.debug(f"Reagent roles: {self.procedure.reagentrole}")
|
|
||||||
# logger.debug(f"Equipment roles: {pformat(proceduretype_dict['equipment'])}")
|
|
||||||
# NOTE: Add --New-- as an option for reagents.
|
# NOTE: Add --New-- as an option for reagents.
|
||||||
for key, value in self.procedure.reagentrole.items():
|
for key, value in self.procedure.reagentrole.items():
|
||||||
value.append(dict(name="--New--"))
|
value.append(dict(name="--New--"))
|
||||||
@@ -107,14 +90,12 @@ class ProcedureCreation(QDialog):
|
|||||||
plate_map=self.plate_map,
|
plate_map=self.plate_map,
|
||||||
edit=self.edit
|
edit=self.edit
|
||||||
)
|
)
|
||||||
with open("procedure_creation_rendered.html", "w") as f:
|
|
||||||
f.write(html)
|
|
||||||
self.webview.setHtml(html)
|
self.webview.setHtml(html)
|
||||||
|
|
||||||
@pyqtSlot(str, str, str, str)
|
@pyqtSlot(str, str, str, str)
|
||||||
def update_equipment(self, equipmentrole: str, equipment: str, process: str, tips: str):
|
def update_equipment(self, equipmentrole: str, equipment: str, process: str, tips: str):
|
||||||
from backend.db.models import Equipment
|
from backend.db.models import Equipment
|
||||||
logger.debug("Updating equipment")
|
# logger.debug("Updating equipment")
|
||||||
try:
|
try:
|
||||||
equipment_of_interest = next(
|
equipment_of_interest = next(
|
||||||
(item for item in self.procedure.equipment if item.equipmentrole == equipmentrole))
|
(item for item in self.procedure.equipment if item.equipmentrole == equipmentrole))
|
||||||
@@ -128,22 +109,10 @@ class ProcedureCreation(QDialog):
|
|||||||
eoi.name = equipment.name
|
eoi.name = equipment.name
|
||||||
eoi.asset_number = equipment.asset_number
|
eoi.asset_number = equipment.asset_number
|
||||||
eoi.nickname = equipment.nickname
|
eoi.nickname = equipment.nickname
|
||||||
logger.warning("Setting processes.")
|
# logger.warning("Setting processes.")
|
||||||
eoi.process = [process for process in equipment.get_processes(equipmentrole=equipmentrole)]
|
eoi.process = [process for process in equipment.get_processes(equipmentrole=equipmentrole)]
|
||||||
# process = next((prcss for prcss in equipment.process if prcss.name == process), None)
|
|
||||||
# if process:
|
|
||||||
# for process in equipment.process:
|
|
||||||
# logger.debug(f"Retrieved process: {process}")
|
|
||||||
# # tips = [tip.to_pydantic() for tip in process.tips]
|
|
||||||
# # if tips:
|
|
||||||
# # process.tips = tips
|
|
||||||
# # else:
|
|
||||||
# # process.tips = [""]
|
|
||||||
# eoi.process.append(process.to_pydantic())
|
|
||||||
# # tips = next((tps for tps in process.tips if tps.name == tips), None)
|
|
||||||
|
|
||||||
self.procedure.equipment.append(eoi)
|
self.procedure.equipment.append(eoi)
|
||||||
logger.debug(f"Updated equipment: {pformat(self.procedure.equipment)}")
|
# logger.debug(f"Updated equipment: {pformat(self.procedure.equipment)}")
|
||||||
|
|
||||||
@pyqtSlot(str, str)
|
@pyqtSlot(str, str)
|
||||||
def text_changed(self, key: str, new_value: str):
|
def text_changed(self, key: str, new_value: str):
|
||||||
|
|||||||
Reference in New Issue
Block a user