From 6129258f1b4520ec2b9f4c8f0f21eb80c3e7a7ed Mon Sep 17 00:00:00 2001 From: "Christopher T. Johnson" Date: Wed, 26 Feb 2025 16:47:33 -0500 Subject: [PATCH] Create names for columns Addresses #17 but it feels like we should have these definitions in the dbConfig. Which leads to the question of moving from QtSql to Pony ORM --- MainWindow.py | 45 +++++++++++++++++++++++++++------------------ docketModel.py | 9 ++++++--- dockettableview.py | 4 +++- 3 files changed, 36 insertions(+), 22 deletions(-) diff --git a/MainWindow.py b/MainWindow.py index 00fb4ff..b20f505 100644 --- a/MainWindow.py +++ b/MainWindow.py @@ -1,3 +1,4 @@ +import enum from typing import Any, cast from PySide6.QtCore import ( @@ -79,11 +80,19 @@ class activeDelegate(QStyledItemDelegate): class casesModel(QSqlTableModel): + class ColumnNames(enum.IntEnum): + case_id = 0 + docket_id = 1 + petitioners = 2 + respondents = 3 + date = 4 + active = 5 + def flags(self, index: QModelIndex | QPersistentModelIndex) -> Qt.ItemFlag: if not index.isValid(): return Qt.ItemFlag.NoItemFlags flags = super(casesModel, self).flags(index) - if index.column() == 5: + if index.column() == casesModel.ColumnNames.active: flags = ( Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemIsEditable @@ -98,7 +107,7 @@ class casesModel(QSqlTableModel): ) -> Any: if not index.isValid(): return None - if index.column() == 5: + if index.column() == casesModel.ColumnNames.active: if role == Qt.ItemDataRole.CheckStateRole: value = super(casesModel, self).data(index) return ( @@ -116,7 +125,7 @@ class casesModel(QSqlTableModel): value: Any, role: int = Qt.ItemDataRole.DisplayRole, ) -> bool: - if role == Qt.ItemDataRole.CheckStateRole and index.column() == 5: + if role == Qt.ItemDataRole.CheckStateRole and index.column() == casesModel.ColumnNames.active: super(casesModel, self).setData(index, 1 if value else 0) return True return super().setData(index, value, role) @@ -139,11 +148,11 @@ class MainWindow(QMainWindow, Ui_MainWindow): "1=1 ORDER BY SUBSTRING(docket_id, 1, 3), CAST(SUBSTRING(docket_id,4) AS INTEGER)" ) model.select() - model.setHeaderData(1, Qt.Orientation.Horizontal, "Docket") - model.setHeaderData(2, Qt.Orientation.Horizontal, "Petitioners") - model.setHeaderData(3, Qt.Orientation.Horizontal, "Respondents") - model.setHeaderData(4, Qt.Orientation.Horizontal, "Date") - model.setHeaderData(5, Qt.Orientation.Horizontal, "Active") + model.setHeaderData(casesModel.ColumnNames.docket_id, Qt.Orientation.Horizontal, "Docket") + model.setHeaderData(casesModel.ColumnNames.petitioners, Qt.Orientation.Horizontal, "Petitioners") + model.setHeaderData(casesModel.ColumnNames.respondents, Qt.Orientation.Horizontal, "Respondents") + model.setHeaderData(casesModel.ColumnNames.date, Qt.Orientation.Horizontal, "Date") + model.setHeaderData(casesModel.ColumnNames.active, Qt.Orientation.Horizontal, "Active") self.casesView.setModel(model) self.casesView.setSelectionMode( @@ -152,23 +161,23 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.casesView.setSelectionBehavior( QAbstractItemView.SelectionBehavior.SelectRows ) - self.casesView.hideColumn(0) + self.casesView.hideColumn(casesModel.ColumnNames.case_id) self.casesView.setItemDelegate(activeDelegate()) - self.casesView.setItemDelegateForColumn(4, dateDelegate()) - self.casesView.resizeColumnToContents(1) - self.casesView.resizeColumnToContents(4) + self.casesView.setItemDelegateForColumn(casesModel.ColumnNames.date, dateDelegate()) + self.casesView.resizeColumnToContents(casesModel.ColumnNames.docket_id) + self.casesView.resizeColumnToContents(casesModel.ColumnNames.date) header = self.casesView.horizontalHeader() - header.setSectionResizeMode(2, QHeaderView.ResizeMode.Fixed) - header.setSectionResizeMode(3, QHeaderView.ResizeMode.Fixed) + header.setSectionResizeMode(casesModel.ColumnNames.petitioners, QHeaderView.ResizeMode.Fixed) + header.setSectionResizeMode(casesModel.ColumnNames.respondents, QHeaderView.ResizeMode.Fixed) self.show() remaining = ( self.casesView.width() - - header.sectionSize(1) - - header.sectionSize(4) + - header.sectionSize(casesModel.ColumnNames.docket_id) + - header.sectionSize(casesModel.ColumnNames.date) - 5 ) - self.casesView.setColumnWidth(2, int(remaining * 0.5)) - self.casesView.setColumnWidth(3, int(remaining * 0.5)) + self.casesView.setColumnWidth(casesModel.ColumnNames.petitioners, int(remaining * 0.5)) + self.casesView.setColumnWidth(casesModel.ColumnNames.respondents, int(remaining * 0.5)) self.casesView.verticalHeader().hide() self.casesView.resizeRowsToContents() self.casesView.doubleClicked.connect(self.rowClicked) diff --git a/docketModel.py b/docketModel.py index ba457e1..633ae96 100644 --- a/docketModel.py +++ b/docketModel.py @@ -1,10 +1,9 @@ -import datetime -from typing import Any, cast +import enum +from typing import Any from PySide6.QtCore import ( QAbstractTableModel, QDate, - QDateTime, QModelIndex, QPersistentModelIndex, Qt, @@ -18,6 +17,10 @@ from lib.utils import query_error class docketModel(QAbstractTableModel): entries: list[list[str | None]] = [] + class ColumnNames(enum.IntEnum): + date = 0 + text = 1 + def __init__(self, case_id: int | None = None) -> None: super(docketModel, self).__init__() if case_id == None: diff --git a/dockettableview.py b/dockettableview.py index b60d5e8..5e93197 100644 --- a/dockettableview.py +++ b/dockettableview.py @@ -34,6 +34,7 @@ from PySide6.QtWidgets import ( QWidget, ) +from docketModel import docketModel from pdfView import PDFViewer @@ -84,6 +85,7 @@ class docketEntry(QTextEdit): class docketTableView(QTableView): + manager: QNetworkAccessManager clickedEvent = Signal(QPoint) anchorSignal = Signal(QModelIndex, str) @@ -139,7 +141,7 @@ class docketTableView(QTableView): red = QPalette() red.setColor(QPalette.ColorRole.Base, Qt.GlobalColor.red) for row in range(0, model.rowCount()): - index = model.index(row, 1) + index = model.index(row, docketModel.ColumnNames.text) widget = docketEntry() widget.setHtml(model.data(index, Qt.ItemDataRole.DisplayRole)) widget.setAutoFillBackground(False)