Updating AddEdit to hopefully include ReagentAdd
This commit is contained in:
@@ -117,7 +117,7 @@ class App(QMainWindow):
|
||||
connect menu and tool bar item to functions
|
||||
"""
|
||||
self.importAction.triggered.connect(self.table_widget.formwidget.importSubmission)
|
||||
self.addReagentAction.triggered.connect(self.table_widget.formwidget.add_reagent)
|
||||
self.addReagentAction.triggered.connect(self.table_widget.formwidget.new_add_reagent)
|
||||
self.joinExtractionAction.triggered.connect(self.table_widget.sub_wid.link_extractions)
|
||||
self.joinPCRAction.triggered.connect(self.table_widget.sub_wid.link_pcr)
|
||||
self.helpAction.triggered.connect(self.showAbout)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
from datetime import date
|
||||
from typing import Any
|
||||
|
||||
from PyQt6.QtWidgets import (
|
||||
@@ -12,7 +13,7 @@ logger = logging.getLogger(f"submissions.{__name__}")
|
||||
|
||||
class AddEdit(QDialog):
|
||||
|
||||
def __init__(self, parent, instance: Any):
|
||||
def __init__(self, parent, instance: Any|None=None):
|
||||
super().__init__(parent)
|
||||
self.instance = instance
|
||||
self.object_type = instance.__class__
|
||||
@@ -22,13 +23,16 @@ class AddEdit(QDialog):
|
||||
self.buttonBox = QDialogButtonBox(QBtn)
|
||||
self.buttonBox.accepted.connect(self.accept)
|
||||
self.buttonBox.rejected.connect(self.reject)
|
||||
fields = {k: v for k, v in self.object_type.__dict__.items() if
|
||||
isinstance(v, InstrumentedAttribute) and k != "id"}
|
||||
# fields = {k: v for k, v in self.object_type.__dict__.items() if
|
||||
# isinstance(v, InstrumentedAttribute) and k != "id"}
|
||||
fields = {k: v for k, v in self.object_type.__dict__.items() if k != "id"}
|
||||
for key, field in fields.items():
|
||||
logger.debug(f"")
|
||||
try:
|
||||
widget = EditProperty(self, key=key, column_type=field.property.expression.type,
|
||||
value=getattr(self.instance, key))
|
||||
except AttributeError:
|
||||
except AttributeError as e:
|
||||
logger.error(f"Problem setting widget {key}: {e}")
|
||||
continue
|
||||
self.layout.addWidget(widget, self.layout.rowCount(), 0)
|
||||
self.layout.addWidget(self.buttonBox)
|
||||
@@ -62,14 +66,19 @@ class EditProperty(QWidget):
|
||||
self.setObjectName(key)
|
||||
match column_type:
|
||||
case String():
|
||||
if not value:
|
||||
value = ""
|
||||
self.widget = QLineEdit(self)
|
||||
self.widget.setText(value)
|
||||
case TIMESTAMP():
|
||||
self.widget = QDateEdit(self)
|
||||
self.widget = QDateEdit(self, calendarPopup=True)
|
||||
if not value:
|
||||
value = date.today()
|
||||
self.widget.setDate(value)
|
||||
case _:
|
||||
logger.error(f"{column_type} not a supported type.")
|
||||
self.widget = None
|
||||
return
|
||||
self.layout.addWidget(self.widget, 0, 1, 1, 3)
|
||||
self.setLayout(self.layout)
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ from backend.db import (
|
||||
from pprint import pformat
|
||||
from .pop_ups import QuestionAsker, AlertPop
|
||||
from .misc import AddReagentForm
|
||||
from .omni_add_edit import AddEdit
|
||||
from typing import List, Tuple
|
||||
from datetime import date
|
||||
|
||||
@@ -139,6 +140,15 @@ class SubmissionFormContainer(QWidget):
|
||||
self.layout().addWidget(self.form)
|
||||
return report
|
||||
|
||||
|
||||
def new_add_reagent(self):
|
||||
instance = Reagent()
|
||||
dlg = AddEdit(parent=self, instance=instance)
|
||||
if dlg.exec():
|
||||
obj = dlg.parse_form()
|
||||
print(obj)
|
||||
|
||||
|
||||
@report_result
|
||||
def add_reagent(self, reagent_lot: str | None = None, reagent_role: str | None = None, expiry: date | None = None,
|
||||
name: str | None = None, kit: str | KitType | None = None) -> Tuple[PydReagent, Report]:
|
||||
|
||||
Reference in New Issue
Block a user