86 lines
2.8 KiB
Python
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)
|
|
|
|
|