def post(self):
        self.response.headers['Content-Type'] = 'application/json'

        email = self.request.get('email')
        services = self.request.get('services').rstrip(',')

        query = db.GqlQuery(
            "SELECT * FROM EmailSubscriber WHERE email = :1",
            email)

        number_rows = query.count()

        if number_rows > 0:
            self.response.status = 409
            self.response.out.write(json.dumps({
                "error": email + " is already subscribed."
            }))
            return

        mail = mailer.Mail()
        mail.send(email,
            "Successfully subscribed to Balanced " + services + " incidents",
            "You successfully subscribed to Balanced " + services + " incidents.",
            self.request.url)

        s = models.EmailSubscriber(email=email,
                                   services=services.split(','))

        s.put()

        self.response.out.write(json.dumps({
            "subscribed": "email",
            "services": services.split(',')
        }))
def send_emails(service, request_url, current_state=None, twitter_tweet=None):
    # This is filthy. Don't judge me bro
    if service == "DASH":
        service = "DASHBOARD"

    email_subscribers = models.EmailSubscriber.gql("WHERE services IN (:1)",
                                                   service)

    if settings.DEBUG:
        LOGGER.info("SENDING NOTIFICATION TO [" +
                    str(email_subscribers.count()) + "] EMAIL SUBSCRIBERS")

    if service in settings.NOTIFY_SERVICES:
        mail = mailer.Mail()
        for email_subscriber in email_subscribers:
            # Tweet
            if (twitter_tweet):
                twitter_tweet = twitter_tweet.strip()

                mail.send(
                    email_subscriber.email, "Tweet from @balancedstatus",
                    "{}".format(twitter_tweet) +
                    "\n\nThis is an automated notification from https://status.balancedpayments.com",
                    request_url)
            # UP/DOWN
            else:
                mail.send(
                    email_subscriber.email,
                    "Balanced {} is {}".format(service, current_state),
                    "Balanced {} is {}.".format(service, current_state) +
                    "\n\nThis is an automated notification from https://status.balancedpayments.com",
                    request_url)
Exemple #3
0
def send_emails(service, current_state, request_url):
    email_subscribers = models.EmailSubscriber.gql("WHERE services IN (:1)",
                                                   service)

    if settings.DEBUG:
        LOGGER.info("SENDING NOTIFICATION TO [" +
                    str(email_subscribers.count()) + "] EMAIL SUBSCRIBERS")

    mail = mailer.Mail()
    for email_subscriber in email_subscribers:
        mail.send(
            email_subscriber.email,
            "Balanced {} is {}".format(service, current_state),
            "Balanced {} is {}.".format(service, current_state) + "\n\n" +
            "This is an automated notification from https://status.balancedpayments.com",
            request_url)
Exemple #4
0
    def sendEmail(self, _usr, _coy, _typ, _row):
        # print("{} - {}: Sending Email for {}".format(_usr, _coy, _typ))

        if self.mailerCompany is None or self.mailerCompany is not _coy:
            # Reuse mailer if same company
            self.mailer = mailer.Mail(
                user=_usr,
                reply_to=self.users[_usr]["reply_to"],
                sign_off_name=self.users[_usr]["sign_off_name"],
                row=_row,
                connection=self.emailConnection)

            self.mailerMappingDict = {
                "AGM": self.mailer.send_acra,
                "GST": self.mailer.send_gst,
                "IRAS": self.mailer.send_iras,
                "audit": self.mailer.send_audit
            }
            self.mailerCompany = _coy

        return self.mailerMappingDict[_typ]()