def data(self, request, pk=None): try: messages_trough_node = Message.objects.filter( devEUI=Node.objects.get(id=pk).dev_eui) except Exception as e: return Response("Node not found", status=status.HTTP_404_NOT_FOUND) page = self.paginate_queryset(messages_trough_node) if page is not None: serializer = MessageSerializer(page, many=True) return self.get_paginated_response(serializer.data) serializer = MessageSerializer(messages_trough_node, many=True) return Response(serializer.data)
def data(self, request, pk=None): try: gateway_mac = Gateway.objects.get(id=pk).mac messages_trough_gateway = Message.objects.filter( rxInfo__gatewayMac=gateway_mac) except Exception as e: return Response("Gateway not found", status=status.HTTP_404_NOT_FOUND) page = self.paginate_queryset(messages_trough_gateway) if page is not None: serializer = MessageSerializer(page, many=True) return self.get_paginated_response(serializer.data) serializer = MessageSerializer(messages_trough_gateway, many=True) return Response(serializer.data)
def get(self, request, mail_id, *args, **kwargs): try: mail = Message.objects.get(pk=int(mail_id)) except: return Response(data=None, status=status.HTTP_404_NOT_FOUND) return Response(data=MessageSerializer(mail, context={ 'request': request }).data, status=status.HTTP_200_OK)
def update_messages(request, socket, context, message): u = User.objects.get(username=red.get_user(socket.session.session_id)) chat = Chat.objects.get(id=1) q = Message(text_chat=message['newmessage'], date_chat=timezone.now(), user=u, chat=chat) q.save() serialized = MessageSerializer(q) socket.send_and_broadcast( dict(action='chatBackEndOneMessage', chat_field=serialized.data))
def load_message_previous(request, socket, context, message): message_prev = [] counter_messages = message['lengthChatComment'] message_chat_all = list(Message.objects.order_by('date_chat')) lengthtab = len(message_chat_all) # on start load 30 messages and load 10 previous messages when scroll on top start_for = lengthtab - counter_messages - 30 - 10 end_for = lengthtab - counter_messages - 30 for i in range(start_for + 3, end_for + 3): message_prev.append(message_chat_all[i]) serialized = MessageSerializer(message_prev, many=True) socket.send(dict(action='loadMessagePrevious', chat_field=serialized.data))
def message_observer(sender, instance, created, **kwargs): if not created: # TODO: handle updated (edited) messages return layer = channels.layers.get_channel_layer() room = instance.room async_to_sync(layer.group_send)( MessengerConsumer.GROUPS['room'].format(room_id=room.id), { 'type': 'websocket.message', 'data': { 'created': created, 'instance_data': MessageSerializer(instance).data, } } )
def messages_chat(request, socket, context, message): messagechat = list(Message.objects.order_by('date_chat')) messagechat = messagechat[-30:] serialized = MessageSerializer(messagechat, many=True) socket.send(dict(action='chatBackEnd', chat_field=serialized.data))