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))