def receive(self, text_data): msg = json.loads(text_data) if msg['type'] == 'new': if msg['id'] == 0: list = List(name=msg['name'], owner=self.scope['user']) list.save() self.send_lists() out = [] # output json lists = List.objects.filter(owner=self.scope['user']) for i in lists: out.append({"id": i.id, "name": i.name}) async_to_sync(self.channel_layer.group_send)( self.room_group_name, { 'type': 'lists_update' } ) elif msg['type'] == 'change_list': async_to_sync(self.channel_layer.group_discard)( self.room_group_name, self.channel_name ) self.list_id = msg['id'] self.room_group_name = str(msg['id']) async_to_sync(self.channel_layer.group_add)( self.room_group_name, self.channel_name ) self.send_list() elif msg['type'] == 'get_lists': self.send_lists() elif msg['type'] == 'new_item': name = msg["name"] list = List.objects.get(pk=self.list_id) item = Item(name=name, owner=list.owner) # TODO: check user permissions to change list item.save() list.items.add(item) list.save() async_to_sync(self.channel_layer.group_send)( self.room_group_name, { 'type': 'items_update' } ) elif msg['type'] == 'toggle_item': id = msg["id"] item = Item.objects.get(pk=id) item.checked = not item.checked item.save() async_to_sync(self.channel_layer.group_send)( self.room_group_name, { 'type': 'items_update' } ) else: pass # TODO: add items to lists
def receive(self, text_data): msg = json.loads(text_data) if msg['type'] == 'new': name = msg['name'] list = List.objects.get(pk=int(self.room_name)) item = Item(name=name, owner=list.owner) item.save() list.items.add(item) list.save() elif msg['type'] == 'mark': item = Item.objects.get(pk=msg['id']) item.checked = not item.checked item.save() async_to_sync(self.channel_layer.group_send)( self.room_group_name, { 'type': 'send_list' } )