Add StatusBar information

Updated workers.py to hold "current" values.
Status bar is three widgets, status label, progressbar and load button.

Fixes: #8, #9
This commit is contained in:
Christopher T. Johnson
2025-02-25 15:24:34 -05:00
parent dd9f08aa5e
commit 7a02bbb262
2 changed files with 120 additions and 29 deletions

View File

@@ -4,7 +4,7 @@ import re
import dateparser
import requests
from bs4 import BeautifulSoup, Tag
from PySide6.QtCore import QDateTime, QThread
from PySide6.QtCore import QDateTime, QThread, Signal
from PySide6.QtSql import QSqlDatabase, QSqlQuery
from lib.utils import query_error
@@ -223,9 +223,17 @@ def update_db(case_id: str, db: QSqlDatabase) -> int:
#
# If there is a linked case, we need to get the ID for that case.
if linked is not None:
#
# If this case is on the Emergency Docket and it is linked to
# a case on the regular docket, then this case is no longer active
#
deactivate = False
linked = linked.replace("Linked with ", "")
for did in linked.split(","):
did = did.strip()
if re.match(r"\d+-\d+$", did):
deactivate = True
query.prepare("SELECT * FROM cases WHERE docket_id = :did")
query.bindValue(":did", linked)
if not query.exec():
@@ -255,6 +263,14 @@ def update_db(case_id: str, db: QSqlDatabase) -> int:
query.bindValue(":rhs", linked_id)
if not query.exec():
query_error(query)
if re.match(r"\d+-\d+$", docket_id):
deactivate = False
if deactivate:
query.prepare("UPDATE cases SET active=0 WHERE case_id = :cid")
query.bindValue(":cid", case_id)
if not query.exec():
query_error(query)
#
# XXX - Process lower courts
#
@@ -295,15 +311,19 @@ class updateThread(QThread):
class loadCases(QThread):
caseLoaded = Signal(int)
year = QDateTime.currentDateTime().toString("yy")
number = 0
def run(self) -> None:
db = QSqlDatabase.cloneDatabase("qt_sql_default_connection", "load")
if not db.open():
raise Exception("db.open()")
year = QDateTime.currentDateTime().toString("yy")
query = QSqlQuery(db)
query.prepare("SELECT * FROM history WHERE year = :year")
print(f"year = {year}")
query.bindValue(":year", year)
print(f"year = {self.year}")
query.bindValue(":year", self.year)
if not query.exec():
query_error(query)
@@ -312,48 +332,49 @@ class loadCases(QThread):
"INSERT INTO history (year, edocket, number) "
"VALUES (:year, 0, 1)"
)
query.bindValue(":year", year)
query.bindValue(":year", self.year)
if not query.exec():
query_error(query)
edocket = 0
number = 1
self.number = 1
history_id = query.lastInsertId()
else:
history_id = query.value("history_id")
edocket = query.value("edocket")
number = query.value("number")
self.number = query.value("number")
count = 0
while year > "00" and count < 100:
while self.year > "00" and count < 100:
self.caseLoaded.emit(count)
query.prepare("SELECT * FROM cases WHERE docket_id = :did")
if edocket == 1:
docket_id = f"{year}A{number}"
docket_id = f"{self.year}A{self.number}"
else:
docket_id = f"{year}-{number}"
docket_id = f"{self.year}-{self.number}"
query.bindValue(":did", docket_id)
if not query.exec():
query_error(query)
if query.next():
if query.value("active") == 0:
print("Already exists and is inactive")
number += 1
self.number += 1
continue
result = update_db(docket_id, db)
print(f"result: {result}")
if result < 0:
year = f"{int(year) - 1:02d}"
if number > 1:
self.year = f"{int(self.year) - 1:02d}"
if self.number > 1:
query.prepare(
"UPDATE history set number = :number WHERE history_id=:hid"
)
query.bindValue(":number", number - 1)
query.bindValue(":number", self.number - 1)
query.bindValue(":hid", history_id)
if not query.exec():
query_error(query)
query.prepare("SELECT * FROM history WHERE year = :year")
print(f"year = {year}")
query.bindValue(":year", year)
print(f"year = {self.year}")
query.bindValue(":year", self.year)
if not query.exec():
query_error(query)
@@ -362,29 +383,30 @@ class loadCases(QThread):
"INSERT INTO history (year, edocket, number) "
"VALUES (:year, 0, 1)"
)
query.bindValue(":year", year)
query.bindValue(":year", self.year)
if not query.exec():
query_error(query)
edocket = 0
number = 1
self.number = 1
history_id = query.lastInsertId()
else:
history_id = query.value("history_id")
edocket = query.value("edocket")
number = query.value("number")
self.number = query.value("number")
continue
number += 1
self.number += 1
count += 1
if number > 1:
if self.number > 1:
query.prepare(
"UPDATE history SET number= :number WHERE year = :year"
)
query.bindValue(":number", number)
query.bindValue(":year", year)
query.bindValue(":number", self.number)
query.bindValue(":year", self.year)
if not query.exec():
query_error(query)
db.close()
del db
QSqlDatabase.removeDatabase("load")
self.caseLoaded.emit(0)
return