def handleMessage(data): # data: contain { message: { _id: uuid4, text: "", user: {_id: "", name: "", avatar: ""}, createdAt: "" }, conversationId: "1", receiverId: "" } # convert the data to python Dictionary data = json.loads(data) # print("data['receiverId'] ", data['receiverId']) # send the new message to conversation print("message ", data['message'], " conversationId ", data['conversationId']) emit("message", data['message'], room=data['conversationId']) # set the sender # try to get user from db. try: sender = User.objects.get(userId=data['message']['user']['_id']) print("User in message from db", json.loads(sender.to_json())) # if user does not exist. except User.DoesNotExist: sender = User(userId=data['message']['user']['_id'], name=data['message']['user']['name'], avatar=data['message']['user']['avatar']).save() print("\n\n\nsender: ", sender, "\nchat.py L:156") # get the conversation conversation = Conversation.objects.get( conversationId=str(data['conversationId'])) # set the new message newMessage = Message(messageId=data['message']['_id'], createdAt=str(data['message']['createdAt']), text=data['message']['text'], user=sender) # , conversationRef=conversation) print("\n\n\nnewMessage: ", newMessage.to_json(), "\nchat.py L:160") print("\n\n\nnewMessage: ", newMessage, "\nchat.py L:162") # save the chages on the database # newMessage.save() # add the new message to messages in the conversation conversation.addMessage(newMessage) # set readStatus # conversation.updateReadStatus(userId=sender.userId) conversation.save() print("new message to conversationId ", str(data['conversationId']))
def post(self, conversation_id): conversation = Conversation.objects.get(id=conversation_id) query = Message.objects() character = Character.objects.get(id=conversation.character.id) query = Knowledge.objects() knowledges = Knowledge.objects(character=conversation.character.id) ramdom_message = [] for i in range(0,random.randint(1, 10)): ramdom_message.append(knowledges[random.randrange(len(knowledges))].content+' ') message = Message() message.content = ''.join(ramdom_message).strip() message.conversation = conversation message.sender_character = True message.save() return Response(message.to_json(), mimetype="application/json", status=200)