cata_system / tecnicas /controllers /main_tester_form_controller.py
chartManD's picture
Asigar un orden al catador para tecnica escalas
1c604aa
raw
history blame
1.66 kB
from ..models import Catador, SesionSensorial, Orden
from ..utils import controller_error, shuffleArray
from django.db import transaction
class MainTesterFormController():
tester: Catador
session: SesionSensorial
order: Orden | dict
def __init__(self, code_session: str, user_tester: str):
try:
self.tester = Catador.objects.get(usuarioCatador=user_tester)
self.session = SesionSensorial.objects.get(
codigo_sesion=code_session)
except (Catador.DoesNotExist, SesionSensorial.DoesNotExist):
return controller_error("Parámetros inexistentes")
def assignOrder(self):
with transaction.atomic():
orders_without_tester = Orden.objects.select_for_update().filter(
id_tecnica=self.session.tecnica, id_catador=None)
if not len(orders_without_tester):
return controller_error("Las ordenes se han acabado")
shuffle_orders = shuffleArray(orders_without_tester)
self.order_to_assign = shuffle_orders.pop()
self.order_to_assign.id_catador = self.tester
self.order_to_assign.save()
return self.order_to_assign
def checkAssignOrder(self):
if not self.tester or not self.session:
return controller_error("Atributos no establecidos")
try:
res_order = Orden.objects.get(
id_tecnica=self.session.tecnica, id_catador=self.tester)
self.order = res_order
return self.order
except Orden.DoesNotExist:
return controller_error("Catador sin orden")