st-ten-1/src/ui/archive/archive.py

71 lines
2.6 KiB
Python
Raw Normal View History

2022-06-01 16:37:19 +00:00
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 Archive(Widget):
2022-09-07 15:24:40 +00:00
def __init__(self, printer=None, hide_cloud_image=False):
2022-06-01 16:37:19 +00:00
super().__init__()
self.printer = printer
2022-09-07 15:24:40 +00:00
# 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",
# "overridden": "Esito forzato",
# "test_data": "Dati del test",
# "archived": "Archiviato sul portale",
# "uploaded": "Immagine in cloud",
# }
# readonly = ["id"]
# else:
crud_aliases = {
"time": "Data e ora",
"user": "Operatore",
"recipe": "Ricetta",
"result": "Esito",
"overridden": "Esito forzato",
"test_data": "Dati del test",
}
# readonly = True
2022-06-01 16:37:19 +00:00
self.crud = Crud(
"archive",
display_name="Archivio",
2022-09-07 15:24:40 +00:00
readonly=True,
2022-06-01 16:37:19 +00:00
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)
2022-08-02 16:15:30 +00:00
self.crud.db_tw.setSelectionBehavior(QAbstractItemView.SelectRows)
self.crud.db_tw.setSelectionMode(QAbstractItemView.SingleSelection)
self.crud.db_tw.itemSelectionChanged.connect(self.check)
2022-06-01 16:37:19 +00:00
self.print_b.clicked.connect(self.print_label)
def check(self):
2022-08-02 16:15:30 +00:00
if not self.crud.modified:
selected = self.crud.get_selected_rows()
2022-06-01 16:37:19 +00:00
if len(selected) == 1:
selected = selected[0] - 1 # - 1 because rn starts from 1 (filters line)
2022-08-02 16:15:30 +00:00
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)
2022-06-01 16:37:19 +00:00
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_archive_label(self.selected)