def create_message(): data = request.get_json() try: message = DirectMessage( body=data["message"], message_read=False, sender_id=data["user_id"], recipient_id=data["recipient_id"], created_at=data.get("time"), ) except Exception as e: msg = "Invalid parameter provided" logger.info(e) return create_response(status=422, message=msg) try: message.save() except: msg = "Failed to save message" logger.info(msg) return create_response(status=422, message=msg) socketio.emit(data["recipient_id"], json.loads(message.to_json())) return create_response( status=201, message=f"Successfully saved message", )
def chat(msg, methods=["POST"]): # print("here") try: message = DirectMessage( body=msg["body"], message_read=msg["message_read"], sender_id=msg["sender_id"], recipient_id=msg["recipient_id"], created_at=msg["time"], ) # msg['created_at'] = time logger.info(msg["recipient_id"]) socketio.emit(msg["recipient_id"], json.loads(message.to_json())) except Exception as e: # msg="Invalid parameter provided" logger.info(e) return create_response(status=500, message="Failed to send message") try: message.save() msg = "successfully sent message" except: msg = "Error in meessage" logger.info(msg) return create_response(status=500, message="Failed to send message") return create_response(status=200, message="successfully sent message")
def contact_mentor(mentor_id): data = request.get_json() if "mentee_id" not in data: return create_response(status=422, message="missing mentee_id") mentee_id = data["mentee_id"] try: mentor = MentorProfile.objects.get(id=mentor_id) mentee = MenteeProfile.objects.get(id=mentee_id) except: msg = "Could not find mentor or mentee for given ids" return create_response(status=422, message=msg) res, res_msg = send_email( mentor.email, data={ "response_email": mentee.email, "interest_areas": data.get("interest_areas", ""), "communication_method": data.get("communication_method", ""), "message": data.get("message", ""), "name": mentee.name, }, template_id=MENTOR_CONTACT_ME, ) if not res: msg = "Failed to send mentee email " + res_msg logger.info(msg) return create_response(status=500, message="Failed to send message") try: message = DirectMessage( body=data.get("message", "Hello"), message_read=False, sender_id=mentee_id, recipient_id=mentor_id, created_at=datetime.today().isoformat(), ) socketio.emit(mentor_id, json.loads(message.to_json())) except Exception as e: msg = "Invalid parameter provided" logger.info(e) return create_response(status=422, message=msg) try: message.save() except: msg = "Failed to save message" logger.info(msg) return create_response(status=422, message=msg) return create_response(status=200, message="successfully sent email message")
def send_weekly_emails(): try: mentee_users = MenteeProfile.objects() mentor_users = MentorProfile.objects() except Exception as e: msg = "error" logger.info(e) return create_response(status=422, message=msg) for user in mentee_users: try: notifications_count = DirectMessage.objects( Q(recipient_id=user.id) & Q(message_read=False)).count() except Exception as e: msg = "No mentee with that id" logger.info(e) return create_response(status=422, message=msg) if notifications_count > 0: res, res_msg = send_email( recipient=user.email, data={"number_unread": str(notifications_count)}, template_id=WEEKLY_NOTIF_REMINDER, ) if not res: msg = "Failed to send mentee email " + res_msg logger.info(msg) for user in mentor_users: try: notifications_count = DirectMessage.objects( Q(recipient_id=user.id) & Q(message_read=False)).count() except Exception as e: msg = "No mentor with that id" logger.info(e) return create_response(status=422, message=msg) if notifications_count > 0: res, res_msg = send_email( recipient=user.email, template_id=WEEKLY_NOTIF_REMINDER, data={"number_unread": str(notifications_count)}, ) if not res: msg = "Failed to send mentee email " + res_msg logger.info(msg) return create_response( message="Successfully sent weekly notification emails")
def get_unread_dm_count(id): try: notifications = DirectMessage.objects( Q(recipient_id=id) & Q(message_read=False)).count() except Exception as e: msg = "No mentee with that id" logger.info(e) return create_response(status=422, message=msg) return create_response(data={"notifications": notifications})
def get_direct_messages(): try: messages = DirectMessage.objects( Q(sender_id=request.args.get("sender_id")) & Q(recipient_id=request.args.get("recipient_id")) | Q(sender_id=request.args.get("recipient_id")) & Q(recipient_id=request.args.get("sender_id"))) except: msg = "Invalid parameters provided" logger.info(msg) return create_response(status=422, message=msg) msg = "Success" if not messages: msg = request.args return create_response(data={"Messages": messages}, status=200, message=msg)
def update_unread_count(): data = request.get_json() if not data: return create_response(status=422, message="Missing data from PUT request") recipient = data.get("recipient", None) sender = data.get("sender", None) if not recipient or not sender: return create_response(status=422, message="Missing IDs for recipient/sender") try: messages = DirectMessage.objects( Q(recipient_id=recipient) & Q(message_read=False) & Q(sender_id=sender)) except Exception as e: msg = "Mongoengine: failed to fetch message objects" logger.info(e) return create_response(status=422, message=msg) messages.update(set__message_read=True) return create_response(status=200, message="Success")