def handle_conversation_payload(message_payload): try: payload = jwt.decode(message_payload, SECRET_KEY) try: print(message_payload) link = db.session.query(UserToConversation).filter(UserToConversation.id == payload["link_id"] and UserToConversation.user_id == payload["user_id"]).first() message = Message(content=payload["message_text"]) message.link = link message.conversation = link.conversation db.session.commit() return "Votre message a été envoyé avec succès" except Exception as e: return "Une erreur est survenue : " + str(e) except jwt.ExpiredSignatureError: return 'Message expiré, renvoyez le message' except jwt.InvalidTokenError: return 'Message expiré, renvoyez le message'
def handle_conversation_payload(message_payload): try: payload = jwt.decode(message_payload, SECRET_KEY) try: link = db.session.query(UserToConversation).filter( UserToConversation.id == payload["link_id"], UserToConversation.user_id == payload["user_id"]).first() user = db.session.query(User).filter( User.id == payload["user_id"]).first() if len(payload["images"]) == 0: message = Message(content=payload["message_text"]) message.link = link message.conversation = link.conversation db.session.commit() emit('message', { 'conversation_id': message.conversation_id, 'message': message.get_simple_json_compliant_content(), 'time': message.sent.isoformat(), 'sender': user.get_simple_json_compliant_content(), 'media_list': [], 'status': 'done' }, room='conversation_' + str(message.conversation_id), namespace='/') message.conversation.mobile_notification( title="Message", body=user.first_name + " vous à envoyer un message.") else: push_images_to_api(user=user, conv_id=link.conversation.id, message=payload["message_text"], attachment_images=payload["images"]) except Exception as e: return "Une erreur est survenue : " + str(e) except jwt.ExpiredSignatureError: return 'Message expiré, renvoyez le message' except jwt.InvalidTokenError: return 'Message expiré, renvoyez le message'
def core_message_send(content, conversation_id, user): try: link = db.session.query(UserToConversation).filter( UserToConversation.conversation_id == conversation_id, UserToConversation.user_id == user.id).first() if link is None: raise e_conversation.ConversationNotFound message = Message(content=content["text_message"] if "text_message" in content else "") message.conversation = link.conversation message.link = link media_list = [] if "files" in content: for file in content["files"]: media = Media() media.identifier = file MessageToMedia(message=message, media=media) db.session.commit() media_list.append(media.get_simple_content()) db.session.commit() response = { "data": { "success": True, 'media_list': media_list, 'message_id': message.id }, "status_code": 200 } except e_conversation.ConversationException as exception: response = { "data": { "success": False, "message": exception.message }, "status_code": exception.status_code } return response
def message_send(content, conversation_id, user, standalone=False): try: link = db.session.query(UserToConversation).filter( UserToConversation.conversation_id == conversation_id, UserToConversation.user_id == user.id).first() if link is None: raise e_conversation.ConversationNotFound message = Message(content=content["text_message"] if "text_message" in content else "") message.conversation = link.conversation message.link = link media_list = [] if "files" in content: for file in content["files"]: media = Media() media.identifier = file MessageToMedia(message=message, media=media) db.session.commit() media_list.append(media.get_simple_content()) db.session.commit() if standalone is False: if not media_list: emit('message', { 'conversation_id': message.conversation_id, 'message': message.get_simple_json_compliant_content(), 'time': message.sent.isoformat(), 'sender': user.get_simple_json_compliant_content(), 'media_list': media_list, 'status': 'done' }, room='conversation_' + str(message.conversation_id), namespace='/') else: emit('message', { 'conversation_id': message.conversation_id, 'message': message.get_simple_json_compliant_content(), 'status': 'pending' }, room='conversation_' + str(message.conversation_id), namespace='/') message.conversation.mobile_notification( title="Message", body=user.first_name + " vous à envoyer un message.") conversation = db.session.query(Conversation).filter( link.conversation_id == Conversation.id).first() info_sender = "[" + link.conversation.name + "] " + user.first_name + " : " try: messenger_conversation_model_send( link.user_id, conversation, info_sender + message.text_content) except Exception: pass try: hangout_conversation_model_send( link.user_id, conversation, info_sender + message.text_content) except Exception: pass response = { "data": { "success": True, 'media_list': media_list, 'message_id': message.id }, "status_code": 200 } except e_conversation.ConversationException as exception: response = { "data": { "success": False, "message": exception.message }, "status_code": exception.status_code } return response
def first_message_to_device(content, circle_id, user): try: circle = db.session.query(Circle).filter( Circle.id == circle_id).first() if circle is None: raise e_circle.CircleNotFound elif not circle.has_member(user): raise e_circle.UserNotPartOfCircle conversation = Conversation( name=content["conversation_name"] if "conversation_name" in content else circle.name, device_access=True) conversation.circle = circle link = UserToConversation(privilege="ADMIN") link.user = user link.conversation = conversation message = Message(content=content["text_message"] if "text_message" in content else "") message.conversation = conversation message.link = link media_list = [] if "files" in content: for file in content["files"]: media = Media() media.identifier = file MessageToMedia(message=message, media=media) db.session.commit() media_list.append(media.get_simple_content()) db.session.commit() sockets.notify_user(circle.device, True, 'conversation', { "conversation_id": conversation.id, "event": 'invite' }) message.conversation.mobile_notification( title="Conversation", body="Nouvelle conversation avec " + user.first_name) info_sender = "[" + conversation.name + "] " + user.first_name + " : " try: messenger_conversation_model_send( user.id, conversation, info_sender + message.text_content) except Exception: pass try: hangout_conversation_model_send(user.id, conversation, info_sender + message.text_content) except Exception: pass response = { "data": { "success": True, 'media_list': media_list, 'message_id': message.id }, "status_code": 200 } except (e_message.MessageException, e_circle.CircleException) as exception: response = { "data": { "success": False, "message": exception.message }, "status_code": exception.status_code } return response
def message_send(conversation_id, content, socket): client = socket.get_client() conv = db.session.query(Conversation).filter( Conversation.id == conversation_id).first() if conv is None: raise Exception('Conversation introuvable') if socket.is_device: message = Message(content=content["text_message"] if "text_message" in content else "", is_user=False) message.conversation = conv message.device = client info_sender = "[" + conv.name + "] " + client.name + " : " else: link = db.session.query(UserToConversation). \ filter(UserToConversation.user_id == socket.client_id, UserToConversation.conversation_id == conv.id).first() if link is None: raise Exception("Vous ne faites pas partie de cette conversation") message = Message(content=content['text_message'] if 'text_message' in content else '') message.conversation = conv message.link = link info_sender = "[" + conv.name + "] " + client.first_name + " : " db.session.commit() user = db.session.query(User).filter(socket.client_id == User.id).first() message.conversation.mobile_notification(title="Message", body=user.first_name + " vous à envoyer un message.") try: messenger_conversation_model_send( 0 if socket.is_device else socket.client_id, conv, info_sender + content["text_message"]) except Exception as e: logger.info("[%s] [%s] [%s] [%s] [%s] [%s]", "SOCKET", "", "message", type(content), content, "FACEBOOK FAILED : " + str(e)) try: hangout_conversation_model_send( 0 if socket.is_device else socket.client_id, conv, info_sender + content["text_message"]) except Exception as e: logger.info("[%s] [%s] [%s] [%s] [%s] [%s]", "SOCKET", "", "message", type(content), content, "HANGOUT FAILED : " + str(e)) media_list = [] if 'files' in content: for file in content["files"]: media = Media() media.identifier = file media.message = message db.session.commit() media_list.append(media.get_json_compliant_content()) socket.emit('media', { 'media_list': media_list, 'message_id': message.id }) socket.emit('success', {'received': True, 'message_id': message.id}) if not media_list: emit('message', { 'conversation_id': conv.id, 'message': message.get_simple_json_compliant_content(), 'time': message.sent.isoformat(), 'sender': client.get_simple_json_compliant_content(), 'media_list': media_list, 'status': 'done' }, room='conversation_' + str(conv.id), namespace='/') else: emit('message', { 'conversation_id': conv.id, 'message': message.get_simple_json_compliant_content(), 'status': 'pending' }, room='conversation_' + str(conv.id), namespace='/')