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