st-ten-1/src/ui/rfid_recipe_selection/rfid_recipe_selection.py
2023-05-16 19:39:30 +02:00

86 lines
2.8 KiB
Python

import sys
import peewee
from PyQt5 import Qt
from lib.helpers import timing
from PyQt5.QtCore import Qt, QTimer, QThread
from PyQt5.QtGui import QKeySequence, QPixmap, QPalette, QColor
from PyQt5.QtWidgets import QShortcut, QApplication
from ui.widget import Widget
from lib import db
from lib.db.models import Recipes
class RFID(Widget):
def __init__(self, parent):
super().__init__()
self.parent=parent
self.recipe_db_model=Recipes
self.status_palettes = {
True: QPalette(),
"": QPalette(),
"warning": QPalette(),
False: QPalette(),
None: QPalette(),
}
self.status_palettes[True].setColor(QPalette.Base, Qt.green)
self.status_palettes[False].setColor(QPalette.Base, Qt.red)
self.status_palettes["warning"].setColor(QPalette.Base, QColor(255, 165, 0))
self.status_palettes[""].setColor(QPalette.Base, QColor(255, 255, 0))
self.delay_timer = QTimer()
self.delay_timer.setSingleShot(True)
self.delay_timer.timeout.connect(self.reset_display)
self.ok_timer = QTimer()
self.ok_timer.setSingleShot(True)
self.ok_timer.timeout.connect(self.set_recipe)
def start(self, recipe=None, step=None, pieces=None):
self.rfid_input_l.setPalette(self.status_palettes[None])
self.rfid_input_l.setPlainText("")
def get(self, data=None, override=False):
if not len(data):
data = None
if data is None:
return
else:
lines = data
if lines[0]=="ERRECINQUE RFID":
# RECIPE CODE FOUND
self.recipe=lines[1]
self.rfid_input_l.setPalette(self.status_palettes[True])
self.ok_timer.start(2000)
else:
# RECIPE CODE NOT FOUND
self.rfid_input_l.setPalette(self.status_palettes[False])
self.instruction_text("FORMATO RFID DIMA NON VALIDO", "red")
self.delay_timer.start(3000)
# LOOKUP RECIPE
def set_recipe(self):
try:
recipe = self.recipe_db_model.get_by_id(self.recipe)
self.parent.set_recipe(recipe)
except peewee.DoesNotExist:
self.rfid_input_l.setPalette(self.status_palettes[False])
self.instruction_text("RICETTA NON TROVATA","red")
self.delay_timer.start(3000)
def reset_display(self):
self.rfid_input_l.setFocus()
self.rfid_input_l.setPlainText("")
self.rfid_input_l.setPalette(self.status_palettes[""])
self.instruction_text("SCANSIONARE BARCODE SELEZIONE RICETTA")
def instruction_text(self,text,color=None):
if getattr(self.parent.centralWidget, "set_text"):
self.parent.centralWidget.set_text(text, color=color)