Preparation for code cleanup
This commit is contained in:
@@ -30,7 +30,7 @@ from backend.db import (construct_submission_info, lookup_reagent,
|
|||||||
)
|
)
|
||||||
from backend.db import lookup_kittype_by_name
|
from backend.db import lookup_kittype_by_name
|
||||||
|
|
||||||
from .functions import check_kit_integrity
|
from .functions import check_kit_integrity, insert_reagent_import
|
||||||
from tools import check_not_nan, create_reagent_list
|
from tools import check_not_nan, create_reagent_list
|
||||||
from backend.excel.reports import make_report_xlsx, make_report_html
|
from backend.excel.reports import make_report_xlsx, make_report_html
|
||||||
|
|
||||||
@@ -138,40 +138,7 @@ class App(QMainWindow):
|
|||||||
about = AlertPop(message=output, status="information")
|
about = AlertPop(message=output, status="information")
|
||||||
about.exec()
|
about.exec()
|
||||||
|
|
||||||
def insert_reagent_import(self, item:str, prsr:SheetParser|None=None) -> QComboBox:
|
|
||||||
add_widget = QComboBox()
|
|
||||||
add_widget.setEditable(True)
|
|
||||||
# Ensure that all reagenttypes have a name that matches the items in the excel parser
|
|
||||||
query_var = item.replace("lot_", "")
|
|
||||||
logger.debug(f"Query for: {query_var}")
|
|
||||||
if prsr != None:
|
|
||||||
if isinstance(prsr.sub[item], numpy.float64):
|
|
||||||
logger.debug(f"{prsr.sub[item]['lot']} is a numpy float!")
|
|
||||||
try:
|
|
||||||
prsr.sub[item] = int(prsr.sub[item]['lot'])
|
|
||||||
except ValueError:
|
|
||||||
pass
|
|
||||||
# query for reagents using type name from sheet and kit from sheet
|
|
||||||
logger.debug(f"Attempting lookup of reagents by type: {query_var}")
|
|
||||||
# below was lookup_reagent_by_type_name_and_kit_name, but I couldn't get it to work.
|
|
||||||
relevant_reagents = [item.__str__() for item in lookup_regent_by_type_name(ctx=self.ctx, type_name=query_var)]#, kit_name=prsr.sub['extraction_kit'])]
|
|
||||||
output_reg = []
|
|
||||||
for reagent in relevant_reagents:
|
|
||||||
if isinstance(reagent, set):
|
|
||||||
for thing in reagent:
|
|
||||||
output_reg.append(thing)
|
|
||||||
elif isinstance(reagent, str):
|
|
||||||
output_reg.append(reagent)
|
|
||||||
relevant_reagents = output_reg
|
|
||||||
# if reagent in sheet is not found insert it into items
|
|
||||||
if prsr != None:
|
|
||||||
logger.debug(f"Relevant reagents for {prsr.sub[item]}: {relevant_reagents}")
|
|
||||||
if str(prsr.sub[item]['lot']) not in relevant_reagents and prsr.sub[item]['lot'] != 'nan':
|
|
||||||
if check_not_nan(prsr.sub[item]['lot']):
|
|
||||||
relevant_reagents.insert(0, str(prsr.sub[item]['lot']))
|
|
||||||
logger.debug(f"New relevant reagents: {relevant_reagents}")
|
|
||||||
add_widget.addItems(relevant_reagents)
|
|
||||||
return add_widget
|
|
||||||
|
|
||||||
def importSubmission(self):
|
def importSubmission(self):
|
||||||
"""
|
"""
|
||||||
@@ -257,7 +224,7 @@ class App(QMainWindow):
|
|||||||
except:
|
except:
|
||||||
add_widget.setDate(date.today())
|
add_widget.setDate(date.today())
|
||||||
case 'reagent':
|
case 'reagent':
|
||||||
# TODO make this a function so I can add in missing reagents below when checking kit integrity.
|
|
||||||
# create label
|
# create label
|
||||||
self.table_widget.formlayout.addWidget(QLabel(item.replace("_", " ").title()))
|
self.table_widget.formlayout.addWidget(QLabel(item.replace("_", " ").title()))
|
||||||
# add_widget = QComboBox()
|
# add_widget = QComboBox()
|
||||||
@@ -290,7 +257,7 @@ class App(QMainWindow):
|
|||||||
# relevant_reagents.insert(0, str(prsr.sub[item]['lot']))
|
# relevant_reagents.insert(0, str(prsr.sub[item]['lot']))
|
||||||
# logger.debug(f"New relevant reagents: {relevant_reagents}")
|
# logger.debug(f"New relevant reagents: {relevant_reagents}")
|
||||||
# add_widget.addItems(relevant_reagents)
|
# add_widget.addItems(relevant_reagents)
|
||||||
add_widget = self.insert_reagent_import(item, prsr=prsr)
|
add_widget = insert_reagent_import(ctx=self.ctx, item=item, prsr=prsr)
|
||||||
self.reagents[item] = prsr.sub[item]
|
self.reagents[item] = prsr.sub[item]
|
||||||
case 'samples':
|
case 'samples':
|
||||||
# hold samples in 'self' until form submitted
|
# hold samples in 'self' until form submitted
|
||||||
@@ -311,7 +278,7 @@ class App(QMainWindow):
|
|||||||
msg.exec()
|
msg.exec()
|
||||||
for item in kit_integrity['missing']:
|
for item in kit_integrity['missing']:
|
||||||
self.table_widget.formlayout.addWidget(QLabel(f"Lot {item.replace('_', ' ').title()}"))
|
self.table_widget.formlayout.addWidget(QLabel(f"Lot {item.replace('_', ' ').title()}"))
|
||||||
add_widget =self.insert_reagent_import(item)
|
add_widget = insert_reagent_import(ctx=self.ctx, item=item)
|
||||||
self.table_widget.formlayout.addWidget(add_widget)
|
self.table_widget.formlayout.addWidget(add_widget)
|
||||||
# create submission button
|
# create submission button
|
||||||
submit_btn = QPushButton("Submit")
|
submit_btn = QPushButton("Submit")
|
||||||
|
|||||||
@@ -1,8 +1,19 @@
|
|||||||
# from ..models import *
|
# from ..models import *
|
||||||
from backend.db.models import *
|
from backend.db.models import *
|
||||||
|
from backend.db import lookup_regent_by_type_name
|
||||||
|
from tools import check_not_nan
|
||||||
# from backend.db import lookup_kittype_by_name
|
# from backend.db import lookup_kittype_by_name
|
||||||
import logging
|
import logging
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
from backend.excel.parser import SheetParser
|
||||||
|
from PyQt6.QtWidgets import (
|
||||||
|
QMainWindow, QLabel, QToolBar,
|
||||||
|
QTabWidget, QWidget, QVBoxLayout,
|
||||||
|
QPushButton, QFileDialog,
|
||||||
|
QLineEdit, QMessageBox, QComboBox, QDateEdit, QHBoxLayout,
|
||||||
|
QSpinBox, QScrollArea
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(f"submissions.{__name__}")
|
logger = logging.getLogger(f"submissions.{__name__}")
|
||||||
|
|
||||||
@@ -28,6 +39,38 @@ def check_kit_integrity(sub:BasicSubmission|KitType, reagenttypes:list|None=None
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def insert_reagent_import(ctx:dict, item:str, prsr:SheetParser|None=None) -> QComboBox:
|
||||||
|
add_widget = QComboBox()
|
||||||
|
add_widget.setEditable(True)
|
||||||
|
# Ensure that all reagenttypes have a name that matches the items in the excel parser
|
||||||
|
query_var = item.replace("lot_", "")
|
||||||
|
logger.debug(f"Query for: {query_var}")
|
||||||
|
if prsr != None:
|
||||||
|
if isinstance(prsr.sub[item], np.float64):
|
||||||
|
logger.debug(f"{prsr.sub[item]['lot']} is a numpy float!")
|
||||||
|
try:
|
||||||
|
prsr.sub[item] = int(prsr.sub[item]['lot'])
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
# query for reagents using type name from sheet and kit from sheet
|
||||||
|
logger.debug(f"Attempting lookup of reagents by type: {query_var}")
|
||||||
|
# below was lookup_reagent_by_type_name_and_kit_name, but I couldn't get it to work.
|
||||||
|
relevant_reagents = [item.__str__() for item in lookup_regent_by_type_name(ctx=ctx, type_name=query_var)]#, kit_name=prsr.sub['extraction_kit'])]
|
||||||
|
output_reg = []
|
||||||
|
for reagent in relevant_reagents:
|
||||||
|
if isinstance(reagent, set):
|
||||||
|
for thing in reagent:
|
||||||
|
output_reg.append(thing)
|
||||||
|
elif isinstance(reagent, str):
|
||||||
|
output_reg.append(reagent)
|
||||||
|
relevant_reagents = output_reg
|
||||||
|
# if reagent in sheet is not found insert it into items
|
||||||
|
if prsr != None:
|
||||||
|
logger.debug(f"Relevant reagents for {prsr.sub[item]}: {relevant_reagents}")
|
||||||
|
if str(prsr.sub[item]['lot']) not in relevant_reagents and prsr.sub[item]['lot'] != 'nan':
|
||||||
|
if check_not_nan(prsr.sub[item]['lot']):
|
||||||
|
relevant_reagents.insert(0, str(prsr.sub[item]['lot']))
|
||||||
|
logger.debug(f"New relevant reagents: {relevant_reagents}")
|
||||||
|
add_widget.addItems(relevant_reagents)
|
||||||
|
return add_widget
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user