def sendCommentNotificationEmail(self, userToEmail, authorUser,
                                        vision, comment):
     '''Takes dictionary inputs'''
     visionUser = User.getById(vision[Vision.Key.USER_ID])
     if visionUser:
         visionUser = visionUser.toDictionary()
         emailAddress = userToEmail[User.Key.EMAIL]
         if authorUser[User.Key.ID] == visionUser[User.Key.ID]:
             emailSubject = authorUser[User.Key.FULL_NAME] + \
                             " responded on their vision"
         else:
             emailSubject = authorUser[User.Key.FULL_NAME] + \
                            " responded on " + \
                            visionUser[User.Key.FULL_NAME] + "\'s vision"
         emailText = emailSubject
         emailHtml = render_template("email/commentNotification.html",
                                     userToEmail=userToEmail,
                                     authorUser=authorUser,
                                     visionUser=visionUser,
                                     vision=vision,
                                     comment=comment)
         email = {
             Constant.EMAIL_TO_KEY : emailAddress,
             Constant.EMAIL_SUBJECT_KEY : emailSubject,
             Constant.EMAIL_BODY_TEXT_KEY : emailText,
             Constant.EMAIL_BODY_HTML_KEY : emailHtml,
         }
         emailer = Emailer()
         emailer.sendBatch([email])
 def sendWelcomeEmail(self, user):
     '''Takes dictionaries as input'''
     emailAddress = user[User.Key.EMAIL]
     emailSubject = "Welcome to Project Awesome!"
     emailText = emailSubject
     emailHtml = render_template("email/welcome.html", user=user)
     email = {
         Constant.EMAIL_TO_KEY : emailAddress,
         Constant.EMAIL_SUBJECT_KEY : emailSubject,
         Constant.EMAIL_BODY_TEXT_KEY : emailText,
         Constant.EMAIL_BODY_HTML_KEY : emailHtml,
     }
     emailer = Emailer()
     emailer.sendBatch([email])
    def sendDailyEmails(self):
        ''' Send daily motivational emails, and return number of emails sent '''
        #Get motivatinal picture for each user
        userInfo = self.__getMotivationContent()

        #Render Templates
        emailInfo = self.__generateEmails(userInfo)

        #Send Email
        emailer = Emailer()
        emailer.sendBatch(emailInfo)

        #Write to log

        return len(emailInfo)
 def sendFollowEmail(self, follower, user):
     '''Takes dictionary inputs'''
     emailAddress = user[User.Key.EMAIL]
     emailSubject = follower[User.Key.FULL_NAME] + " is following you!"
     emailText = emailSubject
     emailHtml = render_template("email/follow.html", 
                                 follower = follower,
                                 user = user)
     email = {
         Constant.EMAIL_TO_KEY : emailAddress,
         Constant.EMAIL_SUBJECT_KEY : emailSubject,
         Constant.EMAIL_BODY_TEXT_KEY : emailText,
         Constant.EMAIL_BODY_HTML_KEY : emailHtml,
     }
     emailer = Emailer()
     emailer.sendBatch([email])
 def sendVisionLikeEmail(self, user, liker, vision):
     '''Takes dictionary inputs'''
     emailAddress = user[User.Key.EMAIL]
     emailSubject = liker[User.Key.FULL_NAME] + " liked your vision"
     emailText = emailSubject
     emailHtml = render_template("email/vision_like.html", 
                                 user = user,
                                 liker = liker,
                                 vision = vision)
     email = {
         Constant.EMAIL_TO_KEY : emailAddress,
         Constant.EMAIL_SUBJECT_KEY : emailSubject,
         Constant.EMAIL_BODY_TEXT_KEY : emailText,
         Constant.EMAIL_BODY_HTML_KEY : emailHtml,
     }
     emailer = Emailer()
     emailer.sendBatch([email])
 def sendCommentEmail(self, authorUser, vision, comment):
     '''Takes dictionary inputs'''
     visionUser = User.getById(vision[Vision.Key.USER_ID])
     if visionUser:
         visionUser = visionUser.toDictionaryFull()
         emailAddress = visionUser[User.Key.EMAIL]
         emailSubject = authorUser[User.Key.FULL_NAME] + " wrote on your vision"
         emailText = emailSubject
         emailHtml = render_template("email/comment.html", 
                                     author = authorUser,
                                     user = visionUser,
                                     vision = vision,
                                     comment = comment)
         email = {
             Constant.EMAIL_TO_KEY : emailAddress,
             Constant.EMAIL_SUBJECT_KEY : emailSubject,
             Constant.EMAIL_BODY_TEXT_KEY : emailText,
             Constant.EMAIL_BODY_HTML_KEY : emailHtml,
         }
         emailer = Emailer()
         emailer.sendBatch([email])
    def sendRepostEmail(self, user, origVision, newVision):
        '''Takes dictionaries as input'''
        origUser = User.getById(origVision['userId'])
        if origUser:
            origUser = origUser.toDictionaryFull()

            emailAddress = origUser[User.Key.EMAIL]
            emailSubject = user[User.Key.FULL_NAME] + " reposted your vision"
            emailText = emailSubject
            emailHtml = render_template("email/repost.html",
                                        origUser = origUser,
                                        origVision = origVision,
                                        user = user,
                                        vision = newVision)
            email = {
                Constant.EMAIL_TO_KEY : emailAddress,
                Constant.EMAIL_SUBJECT_KEY : emailSubject,
                Constant.EMAIL_BODY_TEXT_KEY : emailText,
                Constant.EMAIL_BODY_HTML_KEY : emailHtml,
            }
            emailer = Emailer()
            emailer.sendBatch([email])