Compare commits
2 Commits
3862604dfa
...
6f1202d3ba
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6f1202d3ba | ||
|
|
656164d124 |
@@ -1,3 +1,7 @@
|
|||||||
|
# 202509.03
|
||||||
|
|
||||||
|
- Sortable headers in treeview.
|
||||||
|
|
||||||
# 202509.02
|
# 202509.02
|
||||||
|
|
||||||
- First Useable updated version.
|
- First Useable updated version.
|
||||||
|
|||||||
@@ -655,7 +655,7 @@ class BaseClass(Base):
|
|||||||
from backend.validators import pydant
|
from backend.validators import pydant
|
||||||
if not pyd_model_name:
|
if not pyd_model_name:
|
||||||
pyd_model_name = f"Pyd{self.__class__.__name__}"
|
pyd_model_name = f"Pyd{self.__class__.__name__}"
|
||||||
logger.info(f"Looking for pydant model {pyd_model_name}")
|
# logger.info(f"Looking for pydant model {pyd_model_name}")
|
||||||
try:
|
try:
|
||||||
pyd = getattr(pydant, pyd_model_name)
|
pyd = getattr(pydant, pyd_model_name)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
|
|||||||
@@ -978,7 +978,7 @@ class Procedure(BaseClass):
|
|||||||
output['sample'] = active_samples + inactive_samples
|
output['sample'] = active_samples + inactive_samples
|
||||||
output['reagent'] = [reagent.details_dict() for reagent in output['procedurereagentlotassociation']]
|
output['reagent'] = [reagent.details_dict() for reagent in output['procedurereagentlotassociation']]
|
||||||
output['equipment'] = [equipment.details_dict() for equipment in output['procedureequipmentassociation']]
|
output['equipment'] = [equipment.details_dict() for equipment in output['procedureequipmentassociation']]
|
||||||
logger.debug(f"equipment: {pformat([item for item in output['equipment']])}")
|
# logger.debug(f"equipment: {pformat([item for item in output['equipment']])}")
|
||||||
output['repeat'] = self.repeat
|
output['repeat'] = self.repeat
|
||||||
output['run'] = self.run.name
|
output['run'] = self.run.name
|
||||||
output['excluded'] += self.get_default_info("details_ignore")
|
output['excluded'] += self.get_default_info("details_ignore")
|
||||||
@@ -1045,7 +1045,6 @@ class Procedure(BaseClass):
|
|||||||
return html
|
return html
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class ProcedureTypeReagentRoleAssociation(BaseClass):
|
class ProcedureTypeReagentRoleAssociation(BaseClass):
|
||||||
"""
|
"""
|
||||||
table containing reagenttype/kittype associations
|
table containing reagenttype/kittype associations
|
||||||
|
|||||||
@@ -23,7 +23,9 @@ class SubmissionsTree(QTreeView):
|
|||||||
self.app = get_application_from_parent(parent)
|
self.app = get_application_from_parent(parent)
|
||||||
self.total_count = ClientSubmission.__database_session__.query(ClientSubmission).count()
|
self.total_count = ClientSubmission.__database_session__.query(ClientSubmission).count()
|
||||||
self.setExpandsOnDoubleClick(False)
|
self.setExpandsOnDoubleClick(False)
|
||||||
self.model = model
|
self.model: ClientSubmissionRunModel = model
|
||||||
|
header_labels = ["Name", "Submission Type", "Client Lab", "Submitted Date"]
|
||||||
|
self.model.setHorizontalHeaderLabels(header_labels)
|
||||||
self.setModel(self.model)
|
self.setModel(self.model)
|
||||||
self.setSelectionBehavior(QAbstractItemView.selectionBehavior(self).SelectRows)
|
self.setSelectionBehavior(QAbstractItemView.selectionBehavior(self).SelectRows)
|
||||||
self.set_data()
|
self.set_data()
|
||||||
@@ -48,7 +50,8 @@ class SubmissionsTree(QTreeView):
|
|||||||
self.setAlternatingRowColors(True)
|
self.setAlternatingRowColors(True)
|
||||||
self.setIndentation(20)
|
self.setIndentation(20)
|
||||||
self.setItemsExpandable(True)
|
self.setItemsExpandable(True)
|
||||||
for ii in range(2):
|
self.setSortingEnabled(True)
|
||||||
|
for ii, _ in enumerate(header_labels):
|
||||||
self.resizeColumnToContents(ii)
|
self.resizeColumnToContents(ii)
|
||||||
|
|
||||||
def expand_item(self, event: QModelIndex):
|
def expand_item(self, event: QModelIndex):
|
||||||
@@ -107,15 +110,19 @@ class SubmissionsTree(QTreeView):
|
|||||||
"""
|
"""
|
||||||
self.clear()
|
self.clear()
|
||||||
self.data = [item.to_dict(full_data=True) for item in
|
self.data = [item.to_dict(full_data=True) for item in
|
||||||
|
# self.data = [item.details_dict() for item in
|
||||||
ClientSubmission.query(chronologic=True, page=page, page_size=page_size)]
|
ClientSubmission.query(chronologic=True, page=page, page_size=page_size)]
|
||||||
root = self.model.invisibleRootItem()
|
root = self.model.invisibleRootItem()
|
||||||
for submission in self.data:
|
for submission in self.data:
|
||||||
group_str = f"{submission['submissiontype']}-{submission['submitter_plate_id']}-{submission['submitted_date']}"
|
group_str = f"{submission['submissiontype']}-{submission['submitter_plate_id']}-{submission['submitted_date']}"
|
||||||
submission_item = self.model.add_child(parent=root, child=dict(
|
submission_item: QStandardItem = self.model.add_child(parent=root, child=dict(
|
||||||
name=group_str,
|
name=group_str,
|
||||||
|
client=submission['clientlab'],
|
||||||
|
date=submission['submitted_date'],
|
||||||
|
type=submission['submissiontype'],
|
||||||
query_str=submission['submitter_plate_id'],
|
query_str=submission['submitter_plate_id'],
|
||||||
item_type=ClientSubmission
|
item_type=ClientSubmission
|
||||||
))
|
), additions=True)
|
||||||
for run in submission['run']:
|
for run in submission['run']:
|
||||||
run_item = self.model.add_child(parent=submission_item, child=dict(
|
run_item = self.model.add_child(parent=submission_item, child=dict(
|
||||||
name=run['plate_number'],
|
name=run['plate_number'],
|
||||||
@@ -156,10 +163,19 @@ class SubmissionsTree(QTreeView):
|
|||||||
|
|
||||||
class ClientSubmissionRunModel(QStandardItemModel):
|
class ClientSubmissionRunModel(QStandardItemModel):
|
||||||
|
|
||||||
def add_child(self, parent: QStandardItem, child:dict):
|
def __init__(self, parent):
|
||||||
|
super().__init__(parent)
|
||||||
|
|
||||||
|
def add_child(self, parent: QStandardItem, child:dict, additions:bool=False) -> QStandardItem:
|
||||||
item = QStandardItem(child['name'])
|
item = QStandardItem(child['name'])
|
||||||
item.setData(dict(item_type=child['item_type'], query_str=child['query_str']), 1)
|
item.setData(dict(item_type=child['item_type'], query_str=child['query_str']), 1)
|
||||||
parent.appendRow(item)
|
if additions:
|
||||||
|
item_client = QStandardItem(child['client'])
|
||||||
|
item_date = QStandardItem(child['date'])
|
||||||
|
item_type = QStandardItem(child['type'])
|
||||||
|
parent.appendRow([item, item_type, item_client, item_date])
|
||||||
|
else:
|
||||||
|
parent.appendRow([item])
|
||||||
item.setEditable(False)
|
item.setEditable(False)
|
||||||
return item
|
return item
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user