hitpicking complete, pre-addition of WW-Arctic parsers and models.

This commit is contained in:
Landon Wark
2023-05-31 09:44:20 -05:00
parent 01d95e80f5
commit 1d6823705c
17 changed files with 334 additions and 247 deletions

View File

@@ -135,6 +135,7 @@ class App(QMainWindow):
logger.debug(f"Attempting to open {url}")
webbrowser.get('windows-default').open(f"file://{url.__str__()}")
# All main window functions return a result which is reported here, unless it is None
def result_reporter(self, result:dict|None=None):
if result != None:
msg = AlertPop(message=result['message'], status=result['status'])
@@ -147,128 +148,6 @@ class App(QMainWindow):
self, result = import_submission_function(self)
logger.debug(f"Import result: {result}")
self.result_reporter(result)
# logger.debug(self.ctx)
# # initialize samples
# self.samples = []
# self.reagents = {}
# # set file dialog
# home_dir = str(Path(self.ctx["directory_path"]))
# fname = Path(QFileDialog.getOpenFileName(self, 'Open file', home_dir)[0])
# logger.debug(f"Attempting to parse file: {fname}")
# assert fname.exists()
# # create sheetparser using excel sheet and context from gui
# try:
# prsr = SheetParser(fname, **self.ctx)
# except PermissionError:
# logger.error(f"Couldn't get permission to access file: {fname}")
# return
# if prsr.sub['rsl_plate_num'] == None:
# prsr.sub['rsl_plate_num'] = RSLNamer(fname.__str__()).parsed_name
# logger.debug(f"prsr.sub = {prsr.sub}")
# # destroy any widgets from previous imports
# for item in self.table_widget.formlayout.parentWidget().findChildren(QWidget):
# item.setParent(None)
# # regex to parser out different variable types for decision making
# variable_parser = re.compile(r"""
# # (?x)
# (?P<extraction_kit>^extraction_kit$) |
# (?P<submitted_date>^submitted_date$) |
# (?P<submitting_lab>)^submitting_lab$ |
# (?P<samples>)^samples$ |
# (?P<reagent>^lot_.*$) |
# (?P<csv>^csv$)
# """, re.VERBOSE)
# for item in prsr.sub:
# logger.debug(f"Item: {item}")
# # attempt to match variable name to regex group
# try:
# mo = variable_parser.fullmatch(item).lastgroup
# except AttributeError:
# mo = "other"
# logger.debug(f"Mo: {mo}")
# match mo:
# case 'submitting_lab':
# # create label
# self.table_widget.formlayout.addWidget(QLabel(item.replace("_", " ").title()))
# logger.debug(f"{item}: {prsr.sub[item]}")
# # create combobox to hold looked up submitting labs
# add_widget = QComboBox()
# labs = [item.__str__() for item in lookup_all_orgs(ctx=self.ctx)]
# # try to set closest match to top of list
# try:
# labs = difflib.get_close_matches(prsr.sub[item], labs, len(labs), 0)
# except (TypeError, ValueError):
# pass
# # set combobox values to lookedup values
# add_widget.addItems(labs)
# case 'extraction_kit':
# # create label
# self.table_widget.formlayout.addWidget(QLabel(item.replace("_", " ").title()))
# # if extraction kit not available, all other values fail
# if not check_not_nan(prsr.sub[item]):
# msg = AlertPop(message="Make sure to check your extraction kit in the excel sheet!", status="warning")
# msg.exec()
# # create combobox to hold looked up kits
# # add_widget = KitSelector(ctx=self.ctx, submission_type=prsr.sub['submission_type'], parent=self)
# add_widget = QComboBox()
# # add_widget.currentTextChanged.connect(self.kit_reload)
# # lookup existing kits by 'submission_type' decided on by sheetparser
# uses = [item.__str__() for item in lookup_kittype_by_use(ctx=self.ctx, used_by=prsr.sub['submission_type'])]
# # if len(uses) > 0:
# add_widget.addItems(uses)
# # else:
# # add_widget.addItems(['bacterial_culture'])
# if check_not_nan(prsr.sub[item]):
# self.ext_kit = prsr.sub[item]
# else:
# self.ext_kit = add_widget.currentText()
# case 'submitted_date':
# # create label
# self.table_widget.formlayout.addWidget(QLabel(item.replace("_", " ").title()))
# # uses base calendar
# add_widget = QDateEdit(calendarPopup=True)
# # sets submitted date based on date found in excel sheet
# try:
# add_widget.setDate(prsr.sub[item])
# # if not found, use today
# except:
# add_widget.setDate(date.today())
# case 'reagent':
# # create label
# reg_label = QLabel(item.replace("_", " ").title())
# reg_label.setObjectName(f"lot_{item}_label")
# self.table_widget.formlayout.addWidget(reg_label)
# # create reagent choice widget
# add_widget = ImportReagent(ctx=self.ctx, item=item, prsr=prsr)
# self.reagents[item] = prsr.sub[item]
# case 'samples':
# # hold samples in 'self' until form submitted
# logger.debug(f"{item}: {prsr.sub[item]}")
# self.samples = prsr.sub[item]
# add_widget = None
# case 'csv':
# self.csv = prsr.sub[item]
# case _:
# # anything else gets added in as a line edit
# self.table_widget.formlayout.addWidget(QLabel(item.replace("_", " ").title()))
# add_widget = QLineEdit()
# logger.debug(f"Setting widget text to {str(prsr.sub[item]).replace('_', ' ')}")
# add_widget.setText(str(prsr.sub[item]).replace("_", " "))
# try:
# add_widget.setObjectName(item)
# logger.debug(f"Widget name set to: {add_widget.objectName()}")
# self.table_widget.formlayout.addWidget(add_widget)
# except AttributeError as e:
# logger.error(e)
# # compare self.reagents with expected reagents in kit
# if hasattr(self, 'ext_kit'):
# self.kit_integrity_completion()
# # create submission button
# # submit_btn = QPushButton("Submit")
# # submit_btn.setObjectName("submit_btn")
# # self.table_widget.formlayout.addWidget(submit_btn)
# # submit_btn.clicked.connect(self.submit_new_sample)
# logger.debug(f"Imported reagents: {self.reagents}")
def kit_reload(self):
@@ -277,17 +156,7 @@ class App(QMainWindow):
"""
self, result = kit_reload_function(self)
self.result_reporter(result)
# for item in self.table_widget.formlayout.parentWidget().findChildren(QWidget):
# # item.setParent(None)
# if isinstance(item, QLabel):
# if item.text().startswith("Lot"):
# item.setParent(None)
# else:
# logger.debug(f"Type of {item.objectName()} is {type(item)}")
# if item.objectName().startswith("lot_"):
# item.setParent(None)
# self.kit_integrity_completion()
def kit_integrity_completion(self):
"""
@@ -297,26 +166,6 @@ class App(QMainWindow):
"""
self, result = kit_integrity_completion_function(self)
self.result_reporter(result)
# logger.debug(inspect.currentframe().f_back.f_code.co_name)
# kit_widget = self.table_widget.formlayout.parentWidget().findChild(QComboBox, 'extraction_kit')
# logger.debug(f"Kit selector: {kit_widget}")
# self.ext_kit = kit_widget.currentText()
# logger.debug(f"Checking integrity of {self.ext_kit}")
# kit = lookup_kittype_by_name(ctx=self.ctx, name=self.ext_kit)
# reagents_to_lookup = [item.replace("lot_", "") for item in self.reagents]
# logger.debug(f"Reagents for lookup for {kit.name}: {reagents_to_lookup}")
# kit_integrity = check_kit_integrity(kit, reagents_to_lookup)
# if kit_integrity != None:
# msg = AlertPop(message=kit_integrity['message'], status="critical")
# msg.exec()
# for item in kit_integrity['missing']:
# self.table_widget.formlayout.addWidget(QLabel(f"Lot {item.replace('_', ' ').title()}"))
# add_widget = ImportReagent(ctx=self.ctx, item=item)
# self.table_widget.formlayout.addWidget(add_widget)
# submit_btn = QPushButton("Submit")
# submit_btn.setObjectName("lot_submit_btn")
# self.table_widget.formlayout.addWidget(submit_btn)
# submit_btn.clicked.connect(self.submit_new_sample)
def submit_new_sample(self):