placeholder
This commit is contained in:
@@ -5,7 +5,7 @@ import logging
|
||||
import sys
|
||||
from pprint import pformat
|
||||
from PyQt6.QtWidgets import QTableView, QMenu, QTreeView, QStyledItemDelegate, QStyle, QStyleOptionViewItem, \
|
||||
QHeaderView, QAbstractItemView
|
||||
QHeaderView, QAbstractItemView, QWidget
|
||||
from PyQt6.QtCore import Qt, QAbstractTableModel, QSortFilterProxyModel, pyqtSlot, QModelIndex
|
||||
from PyQt6.QtGui import QAction, QCursor, QStandardItemModel, QStandardItem, QIcon, QColor
|
||||
from backend.db.models import BasicSubmission, ClientSubmission
|
||||
@@ -230,8 +230,12 @@ class SubmissionsSheet(QTableView):
|
||||
class RunDelegate(QStyledItemDelegate):
|
||||
def __init__(self, parent=None):
|
||||
super(RunDelegate, self).__init__(parent)
|
||||
self._plus_icon = QIcon("plus.png")
|
||||
self._minus_icon = QIcon("minus.png")
|
||||
pixmapi = QStyle.StandardPixmap.SP_ToolBarHorizontalExtensionButton
|
||||
icon1 = QWidget().style().standardIcon(pixmapi)
|
||||
pixmapi = QStyle.StandardPixmap.SP_ToolBarVerticalExtensionButton
|
||||
icon2 = QWidget().style().standardIcon(pixmapi)
|
||||
self._plus_icon = icon1
|
||||
self._minus_icon = icon2
|
||||
|
||||
def initStyleOption(self, option, index):
|
||||
super(RunDelegate, self).initStyleOption(option, index)
|
||||
@@ -258,6 +262,11 @@ class SubmissionsTree(QTreeView):
|
||||
self.setSelectionBehavior(QAbstractItemView.selectionBehavior(self).SelectRows)
|
||||
# self.setStyleSheet("background-color: #0D1225;")
|
||||
self.set_data()
|
||||
self.doubleClicked.connect(self.show_details)
|
||||
|
||||
for ii in range(2):
|
||||
self.resizeColumnToContents(ii)
|
||||
|
||||
|
||||
@pyqtSlot(QModelIndex)
|
||||
def on_clicked(self, index):
|
||||
@@ -273,9 +282,20 @@ class SubmissionsTree(QTreeView):
|
||||
logger.debug(pformat(self.data))
|
||||
# sys.exit()
|
||||
for submission in self.data:
|
||||
group_item = self.model.add_group(submission['submitter_plate_number'])
|
||||
group_str = f"{submission['submission_type']}-{submission['submitter_plate_number']}-{submission['submitted_date']}"
|
||||
group_item = self.model.add_group(group_str)
|
||||
for run in submission['runs']:
|
||||
self.model.append_element_to_group(group_item=group_item, texts=run['plate_number'])
|
||||
self.model.append_element_to_group(group_item=group_item, element=run)
|
||||
|
||||
def show_details(self, sel: QModelIndex):
|
||||
id = self.selectionModel().currentIndex()
|
||||
# NOTE: Convert to data in id column (i.e. column 0)
|
||||
id = id.sibling(id.row(), 1)
|
||||
try:
|
||||
id = int(id.data())
|
||||
except ValueError:
|
||||
return
|
||||
BasicSubmission.query(id=id).show_details(self)
|
||||
|
||||
|
||||
def link_extractions(self):
|
||||
@@ -286,12 +306,19 @@ class SubmissionsTree(QTreeView):
|
||||
|
||||
|
||||
class ClientRunModel(QStandardItemModel):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(ClientRunModel, self).__init__(parent)
|
||||
self.setColumnCount(8)
|
||||
self.setHorizontalHeaderLabels(["id", "Name", "Library", "Release Date", "Genre(s)", "Last Played", "Time Played", ""])
|
||||
headers = ["", "id", "Plate Number", "Started Date", "Completed Date", "Technician", "Signed By"]
|
||||
self.setColumnCount(len(headers))
|
||||
self.setHorizontalHeaderLabels(headers)
|
||||
|
||||
for i in range(self.columnCount()):
|
||||
it = self.horizontalHeaderItem(i)
|
||||
try:
|
||||
logger.debug(it.text())
|
||||
except AttributeError:
|
||||
pass
|
||||
# it.setForeground(QColor("#F2F2F2"))
|
||||
|
||||
def add_group(self, group_name):
|
||||
@@ -313,18 +340,29 @@ class ClientRunModel(QStandardItemModel):
|
||||
# it.setForeground(QColor("#F2F2F2"))
|
||||
return item_root
|
||||
|
||||
def append_element_to_group(self, group_item, texts):
|
||||
def append_element_to_group(self, group_item, element:dict):
|
||||
logger.debug(f"Element: {pformat(element)}")
|
||||
j = group_item.rowCount()
|
||||
item_icon = QStandardItem()
|
||||
item_icon.setEditable(False)
|
||||
item_icon.setIcon(QIcon("game.png"))
|
||||
|
||||
# item_icon.setBackground(QColor("#0D1225"))
|
||||
group_item.setChild(j, 0, item_icon)
|
||||
for i, text in enumerate(texts):
|
||||
item = QStandardItem(text)
|
||||
# group_item.setChild(j, 0, item_icon)
|
||||
for i in range(self.columnCount()):
|
||||
it = self.horizontalHeaderItem(i)
|
||||
try:
|
||||
key = it.text().lower().replace(" ", "_")
|
||||
except AttributeError:
|
||||
continue
|
||||
if not key:
|
||||
continue
|
||||
logger.debug(f"Looking for {key} in column {i}")
|
||||
value = str(element[key])
|
||||
logger.debug(f"Got value: {value}")
|
||||
item = QStandardItem(value)
|
||||
item.setBackground(QColor("#CFE2F3"))
|
||||
item.setEditable(False)
|
||||
# item.setBackground(QColor("#0D1225"))
|
||||
# item.setForeground(QColor("#F2F2F2"))
|
||||
group_item.setChild(j, i+1, item)
|
||||
group_item.setChild(j, i, item)
|
||||
# group_item.setChild(j, 1, QStandardItem("B"))
|
||||
|
||||
|
||||
|
||||
@@ -438,7 +438,7 @@ class SubmissionFormWidget(QWidget):
|
||||
value = getattr(self, item)
|
||||
info[item] = value
|
||||
for k, v in info.items():
|
||||
self.pyd.set_attribute(key=k, value=v)
|
||||
self.pyd.__setattr__(k, v)
|
||||
report.add_result(report)
|
||||
return report
|
||||
|
||||
@@ -786,9 +786,53 @@ class ClientSubmissionFormWidget(SubmissionFormWidget):
|
||||
def __init__(self, parent: QWidget, submission: PydSubmission, disable: list | None = None) -> None:
|
||||
super().__init__(parent, submission=submission, disable=disable)
|
||||
save_btn = QPushButton("Save")
|
||||
start_run_btn = QPushButton("Save && Start Run")
|
||||
start_run_btn = QPushButton("Save && Add Run")
|
||||
self.layout.addWidget(save_btn)
|
||||
self.layout.addWidget(start_run_btn)
|
||||
|
||||
start_run_btn.clicked.connect(self.create_new_submission)
|
||||
del self.disabler
|
||||
|
||||
def parse_form(self) -> Report:
|
||||
"""
|
||||
Transforms form info into PydSubmission
|
||||
|
||||
Returns:
|
||||
Report: Report on status of parse.
|
||||
"""
|
||||
report = Report()
|
||||
logger.info(f"Hello from client submission form parser!")
|
||||
info = {}
|
||||
reagents = []
|
||||
for widget in self.findChildren(QWidget):
|
||||
match widget:
|
||||
case self.ReagentFormWidget():
|
||||
reagent = widget.parse_form()
|
||||
if reagent is not None:
|
||||
reagents.append(reagent)
|
||||
else:
|
||||
report.add_result(Result(msg="Failed integrity check", status="Critical"))
|
||||
return report
|
||||
case self.InfoItem():
|
||||
field, value = widget.parse_form()
|
||||
if field is not None:
|
||||
info[field] = value
|
||||
# logger.debug(f"Reagents from form: {reagents}")
|
||||
for item in self.recover:
|
||||
if hasattr(self, item):
|
||||
value = getattr(self, item)
|
||||
info[item] = value
|
||||
for k, v in info.items():
|
||||
self.pyd.__setattr__(k, v)
|
||||
report.add_result(report)
|
||||
return report
|
||||
|
||||
@report_result
|
||||
def to_pydantic(self, *args):
|
||||
self.parse_form()
|
||||
return self.pyd
|
||||
|
||||
def create_new_submission(self, *args) -> Report:
|
||||
self.parse_form()
|
||||
sql = self.pyd.to_sql()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user