cata_system / tecnicas /controllers /models_controller /particiapacion_controller.py
chartManD's picture
Desatalles para sesion con CATA
a13698b
from ...models import Participacion, Tecnica, SesionSensorial, Catador
from ...utils import controller_error
class ParticipacionController():
@staticmethod
def enterSession(tester: Catador, session: SesionSensorial):
try:
participation = Participacion.objects.get(
catador=tester, tecnica=session.tecnica)
participation.finalizado = False
participation.activo = True
participation.save()
return participation
except Participacion.DoesNotExist:
return controller_error("No se ha encontrado la participación")
@staticmethod
def finishSession(participation: Participacion):
participation.refresh_from_db()
participation.finalizado = True
participation.activo = False
participation.save()
return participation
@staticmethod
def outSession(tester: Catador, session: SesionSensorial):
try:
participation = Participacion.objects.get(
catador=tester, tecnica=session.tecnica)
participation.activo = False
participation.save()
return participation
except Participacion.DoesNotExist:
return controller_error("No se ha encontrado la participación")
@staticmethod
def outAllInSession(session: SesionSensorial):
try:
participations = Participacion.objects.filter(
tecnica=session.tecnica)
participations.update(finalizado=False)
message = "Participaciones actualizadas a finalizadas como falso"
return (True, message)
except Exception as e:
print(f"Error al actualizar las participaciones: {str(e)}")
return (False, "Error al actualizar las participaciones")
@staticmethod
def getParticipationsInTechinique(technique: Tecnica | int):
filters = {}
if isinstance(technique, int):
filters["tecnica_id"] = technique
else:
filters["tecnica"] = technique
return list(Participacion.objects.filter(**filters))