from channels.generic.websocket import JsonWebsocketConsumer #from channels.generic.websockets import JsonWebsocketConsumer from treate_E1.models import Player from otree.models import Participant from otree.models_concrete import ParticipantToPlayerLookup import logging import json #from baseline_IA import channels_checker logger = logging.getLogger(__name__) class TaskTracker(JsonWebsocketConsumer): url_pattern = r'^RETtasktracker/(?P.+)$' def clean_kwargs(self): participant = Participant.objects.get(code__exact=self.kwargs['participant_code']) def set_vars(self): participant = Participant.objects.get(code__exact=self.participant_id) cur_page_index = participant._index_in_pages lookup = ParticipantToPlayerLookup.objects.get(participant=participant, page_index=cur_page_index) player_pk = lookup.player_pk self.player = Player.objects.get(id=player_pk) # def get_player(self): # self.clean_kwargs() # return Player.objects.get(id=self.player_pk) def receive_json(self, content, **kwargs): answer = content.get('answer') # def receive(self, text=None, bytes=None, **kwargs): # player = self.get_player() # answer = text.get('answer') # def receive_json(self, content, **kwargs): # answer = content.get('answer') if answer: old_task = self.player.get_or_create_task() old_task.answer = answer old_task.round_number = self.player.round_number old_task.save() if old_task.answer == old_task.correct_answer: feedback = "Вы ответили правильно!" # feedback = "You answered correctly!" else: feedback = "Ваш предыдущий ответ " + old_task.answer + " был неверен, правильный ответ был " + \ old_task.correct_answer + ". Будьте внимательны!" # feedback = "Your previous answer " + old_task.answer + " was incorrect. The right one was " + \ # old_task.correct_answer + ". Be careful!" # new_task = player.get_or_create_task() # self.send({'task_body': new_task.html_body, # 'num_tasks_correct': player.num_tasks_correct, # 'num_tasks_total': player.num_tasks_total, # }) # if int(new_task['num_tasks_correct']) <= 10: new_task = self.player.get_or_create_task() self.send_json({'task_body': new_task.html_body, 'num_tasks_correct': self.player.num_tasks_correct, 'num_tasks_total': self.player.num_tasks_total, 'feedback': feedback, }) # def get_timeout_seconds(self): # if self.player.vars.get('is_dropout'): # return 1 # self.constants.timeout_seconds = 300 # message.reply_channel.send({'text': json.dumps(new_task)}) # def connect(self, message, **kwargs): # logger.info(f'Connected: {self.kwargs["participant_code"]}') def connect(self): self.participant_id = self.scope['url_route']['kwargs']['participant_code'] self.set_vars() self.accept() logger.info(f'Connected: {self.participant_id}')