from channels.generic.websockets import JsonWebsocketConsumer import random from walras.models import Constants, Player, Group, Subsession import json # import pprint class MsgTracker(JsonWebsocketConsumer): url_pattern = (r'^/msg_channel/(?P[0-9]+)/(?P[0-9]+)$') def clean_kwargs(self): self.player_pk = self.kwargs['player_pk'] self.group_pk = self.kwargs['group_pk'] def connection_groups(self, **kwargs): group_name = self.get_group().get_channel_group_name() return [group_name] def connect(self, message, **kwargs): print('someone connected') def disconnect(self, message, **kwargs): print('someone disconnected') def get_player(self): self.clean_kwargs() return Player.objects.get(pk=self.player_pk) def get_group(self): self.clean_kwargs() return Group.objects.get(pk=self.group_pk) def receive(self, text=None, bytes=None, **kwargs): self.clean_kwargs() msg = text sender = self.get_player() group = self.get_group() period=group.get_period() receiver = sender.get_another() if msg['type'] == 'markets_done': print('Markets done message received') message = group.donemessages.create(period=period+1) self.group_send(group.get_channel_group_name(), message.as_dict()) group.save() # subsession.stage = subsession.stage + 1 # subsession.save() return