st-ten-1/src/ui/autotests_archive/autotests_archive.py
matteo porta 0beb139753 init
2022-06-01 18:37:27 +02:00

71 lines
2.6 KiB
Python
Executable File

from lib.db import Users
from PyQt5.QtWidgets import QAbstractItemView
from ui.crud import Crud, Json_External_Dialog_Cell_Widget
from ui.helpers import replace_widget
from ui.widget import Widget
class Autotests_Archive(Widget):
def __init__(self, printer=None):
super().__init__()
self.printer = printer
session = Users.get_session()
if session is not None and session.is_admin:
crud_aliases = {
"id": "Id",
"time": "Data e ora",
"user": "Operatore",
"recipe": "Ricetta",
"result": "Esito",
"reason": "Motivo",
"overridden": "Esito forzato",
"test_data": "Dati del test",
}
readonly = ["id"]
else:
crud_aliases = {
"time": "Data e ora",
"user": "Operatore",
"recipe": "Ricetta",
"result": "Esito",
"reason": "Motivo",
"overridden": "Esito forzato",
"test_data": "Dati del test",
}
readonly = True
self.crud = Crud(
"autotests",
display_name="Archivio autotest",
readonly=readonly,
select=list(crud_aliases.keys()),
fields_aliases=crud_aliases,
widget_classes={
"test_data": Json_External_Dialog_Cell_Widget,
},
)
replace_widget(self, "crud_w", self.crud)
self.selected = None
self.print_b.setEnabled(False)
self.crud.db_tw.setSelectionBehavior(QAbstractItemView.SelectRows)
self.crud.db_tw.setSelectionMode(QAbstractItemView.SingleSelection)
self.crud.db_tw.itemSelectionChanged.connect(self.check)
self.print_b.clicked.connect(self.print_label)
def check(self):
if not self.crud.modified:
selected = self.crud.get_selected_rows()
if len(selected) == 1:
selected = selected[0] - 1 # - 1 because rn starts from 1 (filters line)
if selected >= 0 and selected < len(self.crud.data_index):
selected = self.crud.data_index[selected]
self.selected = self.crud.db.table_model.get_by_id(selected)
self.print_b.setEnabled(True)
return
self.selected = None
self.print_b.setEnabled(False)
def print_label(self):
self.check()
if self.selected is not None and self.printer is not None:
self.printer.print_autotest_label(self.selected)