Updating AddEdit to hopefully include ReagentAdd

This commit is contained in:
lwark
2025-01-06 09:15:43 -06:00
parent b55258f677
commit 8662bbdc2f
9 changed files with 67 additions and 12 deletions

View File

@@ -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)