Exemplo n.º 1
0
    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
Exemplo n.º 2
0
 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'
         }
     )