예제 #1
0
    def post(self):
        if self.user:
            user = User.get_by_id(int(self.user_id))
            action = self.request.get('action')
            if action == "sendMessageAjax":
                
                messageSTRING               = self.request.get('message') #fecthing message sent by ajax
                messageJSON                 = json.loads(messageSTRING)
                receiver_id                 = messageJSON[3]['receiver_id']
                recipient                   = User.get_by_id(int(receiver_id))
            
                #dict to hold message
                message                     = {}

                #determining how message will be saved
                message['msg_type']         = "new message to"
                message['category']         = messageJSON[0]['type'] 
                message['receiver_profile'] = recipient.user_profile #has to be the email of the receiver not the sender. Must change this
                message['receiver']         = recipient
                message['sender']           = user

                #message details to be sent through mandrill
                message['sender_email']       = user.alias
                message['sender_name']        = user.first_name +" "+ user.last_name
                message['receiver_email']     = recipient.email 
                message['receiver_name']      = recipient.first_name +" "+ recipient.last_name
                message['subject']            = messageJSON[1]['subject']
                message['content']            = messageJSON[2]['content']
                message['receiver_id']        = messageJSON[3]['receiver_id']
                message['notification_email'] = messageJSON[4]['notification_email']
                message['reply_to']           = user.alias #sender alias  
                message['date']               = strftime("%a, %d %b %Y %X +0000", gmtime())  

                ################################## working on this at the moment #############################
                # print message
                #confirming email was sent
                # message_status              = mailhandler.outBoundMail(message)   
                # msg                         = Message.create(message)
                message_status                = mailhandler.composeNewMail(message) 
                # self.response.write(message) 
                print message_status
                self.response.write(message_status)

            else:
                self.redirect('/compose')
        else:
            self.redirect('/compose')    
    def post(self, user_id):
        def sessionDetails(session,message):
            session['subject'] = message['subject']
            session['notify-email'] = message['notification_email']
            session['message'] = message['content']
            # session[]
        
        def getMessage(user, recipient):
            #dict to hold message
            message                     = {}

            #determining how message will be saved
            message['msg_type']         = "new message to"
            message['category']         = self.request.get("type-of-email")
            message['receiver_profile'] = recipient.user_profile #has to be the email of the receiver not the sender. Must change this
            message['receiver']         = recipient
            message['sender']           = user

            #message details to be sent through mandrill
            message['sender_email']       = user.alias
            message['sender_name']        = user.first_name +" "+ user.last_name
            message['receiver_email']     = recipient.email 
            message['receiver_name']      = recipient.first_name +" "+ recipient.last_name
            message['subject']            = self.request.get("subject")
            message['content']            = self.request.get("message")
            message['receiver_id']        = recipient.key().id()
            message['notification_email'] = self.request.get("notify-email")
            message['reply_to']           = user.alias #sender alias  
            message['date']               = strftime("%a, %d %b %Y %X +0000", gmtime())  

            return message

        def validateMessage(message):
            soup = BeautifulSoup(message['content'])

            return emailvalid.check_email(message['notification_email']) and len(soup.get_text()) > 0 and message['subject'] != ""

        if self.user:
            user =  self.getUser(self.user_id)
            recipient_id = self.request.get("recipient")
            recipient = self.getUser(recipient_id)
            message = getMessage(user, recipient)
            form_is_valid = validateMessage(message)
            session = get_current_session()

            if form_is_valid:
                session['subject'] = ""
                session['notify-email'] = ""
                session['message'] = ""
                session['message_status'] = ""
                if session["xsrf_token"] == self.request.get("token"):
                    message_status = mailhandler.composeNewMail(message) 

                    if message_status == False:
                        self.redirect("/messages/compose/%d" %(int(recipient_id)))
                    else:
                        self.redirect("/messages/sent")
                else:
                    self.redirect("/messages/compose/%d" %(int(recipient_id)))
            else:
                sessionDetails(session, message)
                self.redirect("/messages/compose/%d" %(int(recipient_id)))