71 lines
2.6 KiB
Python
Executable File
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)
|