Change to mysql and QSqlTableModel

This commit is contained in:
Christopher T. Johnson
2025-02-12 10:25:05 -05:00
parent c18ae64a84
commit 860cbe8ff0

View File

@@ -1,22 +1,24 @@
#!venv/bin/python3
import datetime
import re
import sys
from typing import Any, cast
from PySide6.QtCore import (
QCoreApplication,
QDate,
QEvent,
QModelIndex,
QObject,
QPersistentModelIndex,
QRect,
QSize,
Qt,
Signal,
Slot,
)
from PySide6.QtGui import QColor, QPainter, QTextDocument
from PySide6.QtSql import (
QSqlDatabase,
QSqlQuery,
QSqlTableModel,
)
from PySide6.QtWidgets import (
@@ -31,7 +33,6 @@ from PySide6.QtWidgets import (
)
from docketModel import docketModel
from lib.utils import query_error
from ui.MainWindow import Ui_MainWindow
from workers import loadCases, updateThread
@@ -39,9 +40,8 @@ translate = QCoreApplication.translate
class dateDelegate(QStyledItemDelegate):
def displayText(self, value: int, _: Any) -> str:
date = datetime.date.fromtimestamp(value)
return date.strftime("%B %-d, %Y")
def displayText(self, value: QDate, _: Any) -> str:
return value.toString("MMMM d, yyyy")
class QStyleOptionViewItemInit(QStyleOptionViewItem):
@@ -61,7 +61,7 @@ class activeDelegate(QStyledItemDelegate):
options = cast(QStyleOptionViewItemInit, option)
super().initStyleOption(options, index)
assert isinstance(index, QModelIndex)
if index.siblingAtColumn(6).data() == 0:
if index.siblingAtColumn(5).data() == 0:
options.backgroundBrush = QColor(0x444444)
return
@@ -80,6 +80,16 @@ class documentDelegate(QStyledItemDelegate):
options.backgroundBrush = QColor(0x444444)
return
def eventFilter(self, object: QObject, event: QEvent) -> bool:
if event.type() in [ QEvent.Type.MouseButtonPress,
QEvent.Type.MouseButtonRelease]:
return False
return super().eventFilter(object, event)
def event(self, ev:QEvent) -> bool:
print(ev)
return super(documentDelegate,self).event(ev)
def paint(
self,
painter: QPainter,
@@ -130,15 +140,12 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.loadThread.finished.connect(self.updateDone)
self.loadThread.start()
# model = QSqlQueryModel()
model = QSqlTableModel()
query = QSqlQuery(
"SELECT * FROM cases ORDER BY SUBSTR(docket_id,1,3), "
"CAST(SUBSTR(docket_id,4) AS INT)"
)
if not query.exec():
query_error(query)
model.setQuery(query)
model.setTable("cases")
model.select()
model.setHeaderData(1, Qt.Orientation.Horizontal, "Docket")
model.setHeaderData(2, Qt.Orientation.Horizontal, "Petitioners")
model.setHeaderData(3, Qt.Orientation.Horizontal, "Respondents")
self.casesView.setModel(model)
self.casesView.setSelectionMode(
@@ -148,14 +155,13 @@ class MainWindow(QMainWindow, Ui_MainWindow):
QAbstractItemView.SelectionBehavior.SelectRows
)
self.casesView.hideColumn(0)
self.casesView.hideColumn(2)
self.casesView.setItemDelegateForColumn(5, dateDelegate())
self.casesView.setItemDelegate(activeDelegate())
self.casesView.setItemDelegateForColumn(4, dateDelegate())
self.casesView.resizeColumnToContents(1)
self.casesView.resizeColumnToContents(5)
header = self.casesView.horizontalHeader()
header.setSectionResizeMode(2, QHeaderView.ResizeMode.Fixed)
header.setSectionResizeMode(3, QHeaderView.ResizeMode.Fixed)
header.setSectionResizeMode(4, QHeaderView.ResizeMode.Fixed)
self.show()
remaining = (
self.casesView.width()
@@ -163,8 +169,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
- header.sectionSize(5)
- 5
)
self.casesView.setColumnWidth(2, int(remaining * 0.5))
self.casesView.setColumnWidth(3, int(remaining * 0.5))
self.casesView.setColumnWidth(4, int(remaining * 0.5))
self.casesView.verticalHeader().hide()
self.casesView.resizeRowsToContents()
self.casesView.doubleClicked.connect(self.rowClicked)
@@ -205,6 +211,11 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.updateThread.start()
return
@Slot(QModelIndex) # type: ignore
def on_docketView_clicked(self, index: QModelIndex) -> None:
print(f"view clicked, cell: {index.column()}, {index.row()}")
return
@Slot()
def updateDone(self) -> None:
self.updateThread = None