Midway through disaster of changing table names.

This commit is contained in:
Landon Wark
2024-01-19 15:17:07 -06:00
parent d66d861262
commit 319f72cab2
31 changed files with 1040 additions and 1457 deletions

View File

@@ -10,17 +10,14 @@ logger = logging.getLogger(f"submissions.{__name__}")
class EquipmentUsage(QDialog):
def __init__(self, parent, submission_type:SubmissionType|str, submission:BasicSubmission) -> QDialog:
def __init__(self, parent, submission:BasicSubmission) -> QDialog:
super().__init__(parent)
self.submission = submission
self.setWindowTitle("Equipment Checklist")
self.used_equipment = submission.get_used_equipment()
self.used_equipment = self.submission.get_used_equipment()
self.kit = self.submission.extraction_kit
logger.debug(f"Existing equipment: {self.used_equipment}")
if isinstance(submission_type, str):
self.submission_type = SubmissionType.query(name=submission_type)
else:
self.submission_type = submission_type
# self.static_equipment = submission_type.get_equipment()
self.opt_equipment = self.submission_type.get_equipment()
self.opt_equipment = submission.submission_type.get_equipment()
logger.debug(f"EquipmentRoles: {self.opt_equipment}")
self.layout = QVBoxLayout()
self.setLayout(self.layout)
@@ -31,20 +28,44 @@ class EquipmentUsage(QDialog):
self.buttonBox = QDialogButtonBox(QBtn)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
label = self.LabelRow(parent=self)
self.layout.addWidget(label)
for eq in self.opt_equipment:
self.layout.addWidget(eq.toForm(parent=self, submission_type=self.submission_type, used=self.used_equipment))
widg = eq.toForm(parent=self, submission_type=self.submission.submission_type, used=self.used_equipment)
self.layout.addWidget(widg)
widg.update_processes()
self.layout.addWidget(self.buttonBox)
def parse_form(self):
output = []
for widget in self.findChildren(QWidget):
match widget:
case (EquipmentCheckBox()|RoleComboBox()) :
output.append(widget.parse_form())
case RoleComboBox() :
if widget.check.isChecked():
output.append(widget.parse_form())
case _:
pass
return [item for item in output if item != None]
class LabelRow(QWidget):
def __init__(self, parent) -> None:
super().__init__(parent)
self.layout = QHBoxLayout()
self.check = QCheckBox()
self.layout.addWidget(self.check)
self.check.stateChanged.connect(self.check_all)
for item in ["Role", "Equipment", "Process"]:
l = QLabel(item)
l.setMaximumWidth(200)
l.setMinimumWidth(200)
self.layout.addWidget(l)
self.setLayout(self.layout)
def check_all(self):
for object in self.parent().findChildren(QCheckBox):
object.setChecked(self.check.isChecked())
class EquipmentCheckBox(QWidget):
def __init__(self, parent, equipment:PydEquipment) -> None:
@@ -56,7 +77,6 @@ class EquipmentCheckBox(QWidget):
self.check = QCheckBox()
if equipment.static:
self.check.setChecked(True)
# self.check.setEnabled(False)
if equipment.nickname != None:
text = f"{equipment.name} ({equipment.nickname})"
else:
@@ -87,28 +107,42 @@ class RoleComboBox(QWidget):
else:
self.check.setChecked(True)
self.box = QComboBox()
self.box.setMaximumWidth(125)
self.box.setMinimumWidth(125)
self.box.setMaximumWidth(200)
self.box.setMinimumWidth(200)
self.box.addItems([item.name for item in role.equipment])
self.box.currentTextChanged.connect(self.update_processes)
# self.check = QCheckBox()
# self.layout.addWidget(label)
self.process = QComboBox()
self.process.setMaximumWidth(125)
self.process.setMinimumWidth(125)
self.process.setMaximumWidth(200)
self.process.setMinimumWidth(200)
self.process.setEditable(True)
# self.process.addItems(submission_type.get_processes_for_role(equipment_role=role.name))
self.process.addItems(role.processes)
# self.process.addItems(role.processes)
self.layout.addWidget(self.check)
self.layout.addWidget(QLabel(f"{role.name}:"))
label = QLabel(f"{role.name}:")
label.setMinimumWidth(200)
label.setMaximumWidth(200)
label.setAlignment(Qt.AlignmentFlag.AlignLeft)
self.layout.addWidget(label)
self.layout.addWidget(self.box)
self.layout.addWidget(self.process)
# self.layout.addWidget(self.check)
self.setLayout(self.layout)
# self.update_processes()
def update_processes(self):
equip = self.box.currentText()
logger.debug(f"Updating equipment: {equip}")
equip2 = [item for item in self.role.equipment if item.name==equip][0]
logger.debug(f"Using: {equip2}")
self.process.clear()
self.process.addItems([item for item in equip2.processes if item in self.role.processes])
def parse_form(self) -> str|None:
eq = Equipment.query(name=self.box.currentText())
if self.check:
return PydEquipment(name=eq.name, process=self.process.currentText(), role=self.role.name, asset_number=eq.asset_number, nickname=eq.nickname)
else:
return None
# if self.check.isChecked():
return PydEquipment(name=eq.name, processes=[self.process.currentText()], role=self.role.name, asset_number=eq.asset_number, nickname=eq.nickname)
# else:
# return None