Add double click and require people have books assigned before double click

This commit is contained in:
Christopher T. Johnson
2023-11-15 21:56:13 -05:00
parent 2b2f461d2f
commit a6cacdb538

33
main.py
View File

@@ -4,7 +4,7 @@ import re
import sys
from typing import cast
from PyQt6.QtCore import Qt, pyqtSlot
from PyQt6.QtCore import QModelIndex, Qt, pyqtSlot
from PyQt6.QtGui import (
QAction,
QFont,
@@ -19,8 +19,6 @@ from PyQt6.QtWidgets import QApplication, QFileDialog, QMainWindow
from lib import *
from ui.MainWindow import Ui_MainWindow
# from ui.testWindow import Ui_MainWindow
def query_error(query: QSqlQuery) -> None:
print(
@@ -34,17 +32,28 @@ def query_error(query: QSqlQuery) -> None:
raise Exception("SQL Error")
class ModelOverride(QSqlQueryModel):
def flags(self, index: QModelIndex) -> Qt.ItemFlag:
itemFlags = super(ModelOverride, self).flags(index)
value = index.siblingAtColumn(3).data()
if not value or value < 1:
itemFlags &= ~(Qt.ItemFlag.ItemIsSelectable | Qt.ItemFlag.ItemIsEnabled)
return itemFlags
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self) -> None:
super(MainWindow, self).__init__()
self.setupUi(self)
model = QSqlQueryModel()
# model = QSqlQueryModel()
model = ModelOverride()
query = QSqlQuery("SELECT * FROM people ORDER BY name")
model.setQuery(query)
self.peopleView.setModel(model)
self.peopleView.setModelColumn(1)
self.ReadButton.clicked.connect(self.readAction)
self.bookBtn.clicked.connect(self.bookAction)
self.peopleView.doubleClicked.connect(self.readAction)
self.createActions()
self.show()
return
@@ -148,11 +157,15 @@ class MainWindow(QMainWindow, Ui_MainWindow):
return
@pyqtSlot()
def readAction(self) -> None:
indexes = self.peopleView.selectedIndexes()
if len(indexes) < 1:
return
person_id = indexes[0].siblingAtColumn(0).data()
@pyqtSlot(QModelIndex)
def readAction(self, index: QModelIndex | None = None) -> None:
if index:
person_id = index.siblingAtColumn(0).data()
else:
indexes = self.peopleView.selectedIndexes()
if len(indexes) < 1:
return
person_id = indexes[0].siblingAtColumn(0).data()
dlg = EditDialog(person_id)
dlg.exec()
return
@@ -232,7 +245,7 @@ def schema_update(db: QSqlDatabase) -> None:
if not query.exec(matches.group(1) + new_table_name + matches.group(3)):
query_error(query)
# step 5 transfer content
coldefs = re.search(r"\((.+)\)", old).group(1).split(", ") # type: ignore[union-attr]
coldefs = re.search(r"\((.+)\)", old).group(1).split(", ") # type: ignore[union-attr]
cols = [x.split(" ")[0] for x in coldefs]
if not query.exec(
"INSERT INTO "