Added in ability to overwrite submissions.

This commit is contained in:
Landon Wark
2023-01-26 14:54:32 -06:00
parent 3c308f6559
commit bbb65d3fe6
9 changed files with 151 additions and 93 deletions

View File

@@ -27,7 +27,7 @@ from backend.db import (construct_submission_info, lookup_reagent,
)
from backend.excel.reports import make_report_xlsx
import numpy
from frontend.custom_widgets import AddReagentQuestion, AddReagentForm, SubmissionsSheet, ReportDatePicker, KitAdder, ControlsDatePicker
from frontend.custom_widgets import AddReagentQuestion, AddReagentForm, SubmissionsSheet, ReportDatePicker, KitAdder, ControlsDatePicker, OverwriteSubQuestion
import logging
import difflib
@@ -240,9 +240,16 @@ class App(QMainWindow):
parsed_reagents.append(wanted_reagent)
logger.debug(info)
info['samples'] = self.samples
base_submission = construct_submission_info(ctx=self.ctx, info_dict=info)
base_submission, output = construct_submission_info(ctx=self.ctx, info_dict=info)
if output['message'] != None:
dlg = OverwriteSubQuestion(output['message'], base_submission.rsl_plate_num)
if dlg.exec():
base_submission.reagents = []
else:
return
for reagent in parsed_reagents:
base_submission.reagents.append(reagent)
logger.debug(f"Sending submission: {base_submission.rsl_plate_num} to database.")
result = store_submission(ctx=self.ctx, base_submission=base_submission)
if result != None:
msg = QMessageBox()
@@ -250,8 +257,11 @@ class App(QMainWindow):
msg.setText("Error")
msg.setInformativeText(result['message'])
msg.setWindowTitle("Error")
msg.show()
msg.exec()
self.table_widget.sub_wid.setData()
for item in self.table_widget.formlayout.parentWidget().findChildren(QWidget):
item.setParent(None)
def add_reagent(self, reagent_lot:str|None=None, reagent_type:str|None=None):

View File

@@ -44,6 +44,25 @@ class AddReagentQuestion(QDialog):
self.setLayout(self.layout)
class OverwriteSubQuestion(QDialog):
def __init__(self, message:str, rsl_plate_num:str):
super().__init__()
self.setWindowTitle(f"Overwrite {rsl_plate_num}?")
QBtn = QDialogButtonBox.StandardButton.Yes | QDialogButtonBox.StandardButton.No
self.buttonBox = QDialogButtonBox(QBtn)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
self.layout = QVBoxLayout()
message = QLabel(message)
self.layout.addWidget(message)
self.layout.addWidget(self.buttonBox)
self.setLayout(self.layout)
class AddReagentForm(QDialog):
def __init__(self, ctx:dict, reagent_lot:str|None, reagent_type:str|None):
super().__init__()