def connect_wait_page(message, params): session_pk, page_index, model_name, model_pk = params.split(',') session_pk = int(session_pk) page_index = int(page_index) model_pk = int(model_pk) group_name = channels_wait_page_group_name( session_pk, page_index, model_name, model_pk ) group = Group(group_name) group.add(message.reply_channel) # in case message was sent before this web socket connects if model_name == 'group': ready = CompletedGroupWaitPage.objects.filter( page_index=page_index, group_pk=model_pk, session_pk=session_pk, after_all_players_arrive_run=True).exists() else: # subsession ready = CompletedSubsessionWaitPage.objects.filter( page_index=page_index, session_pk=session_pk, after_all_players_arrive_run=True).exists() if ready: message.reply_channel.send( {'text': json.dumps( {'status': 'ready'})})
def connect_wait_page(message, params): session_pk, page_index, model_name, model_pk = params.split(',') session_pk = int(session_pk) page_index = int(page_index) model_pk = int(model_pk) group_name = channels_wait_page_group_name( session_pk, page_index, model_name, model_pk ) group = Group(group_name) group.add(message.reply_channel) # in case message was sent before this web socket connects if model_name == 'group': ready = CompletedGroupWaitPage.objects.filter( page_index=page_index, group_pk=model_pk, session_id=session_pk, after_all_players_arrive_run=True).exists() else: # subsession ready = CompletedSubsessionWaitPage.objects.filter( page_index=page_index, session_id=session_pk, after_all_players_arrive_run=True).exists() if ready: message.reply_channel.send( {'text': json.dumps( {'status': 'ready'})})
def connect_wait_page(message, params): session_pk, page_index, group_id_in_subsession = params.split(',') session_pk = int(session_pk) page_index = int(page_index) group_name = channels_wait_page_group_name( session_pk, page_index, group_id_in_subsession ) group = Group(group_name) group.add(message.reply_channel) # in case message was sent before this web socket connects if group_id_in_subsession: ready = CompletedGroupWaitPage.objects.filter( page_index=page_index, id_in_subsession=int(group_id_in_subsession), session_id=session_pk, fully_completed=True).exists() else: # subsession ready = CompletedSubsessionWaitPage.objects.filter( page_index=page_index, session_id=session_pk, fully_completed=True).exists() if ready: message.reply_channel.send( {'text': json.dumps( {'status': 'ready'})})
def disconnect_wait_page(message, params): app_label, page_index, model_name, model_pk = params.split(',') page_index = int(page_index) model_pk = int(model_pk) group_name = channels_wait_page_group_name(app_label, page_index, model_name, model_pk) group = Group(group_name) group.discard(message.reply_channel)
def disconnect_wait_page(message, params): app_label, page_index, model_name, model_pk = params.split(',') page_index = int(page_index) model_pk = int(model_pk) group_name = channels_wait_page_group_name( app_label, page_index, model_name, model_pk ) group = Group(group_name) group.discard(message.reply_channel)
def disconnect_wait_page(message, params): session_pk, page_index, group_id_in_subsession = params.split(',') session_pk = int(session_pk) page_index = int(page_index) group_name = channels_wait_page_group_name( session_pk, page_index, group_id_in_subsession ) group = Group(group_name) group.discard(message.reply_channel)
def connect_wait_page(message, params): app_label, page_index, model_name, model_pk = params.split(',') page_index = int(page_index) model_pk = int(model_pk) group_name = channels_wait_page_group_name( app_label, page_index, model_name, model_pk ) group = Group(group_name) group.add(message.reply_channel) # in case message was sent before this web socket connects # fixme: app name or app label? models_module = common_internal.get_models_module(app_label) GroupOrSubsession = { 'subsession': getattr(models_module, 'Subsession'), 'group': getattr(models_module, 'Group') }[model_name] group_or_subsession = GroupOrSubsession.objects.get(pk=model_pk) participants_for_this_page = set( p.participant for p in group_or_subsession.player_set.all() ) unvisited = set( p for p in participants_for_this_page if p._index_in_pages < page_index ) if not unvisited: message.reply_channel.send( {'text': json.dumps( {'status': 'ready'})})
def group_name(self, session_pk, page_index, group_id_in_subsession): return channels_wait_page_group_name(session_pk, page_index, group_id_in_subsession)