Ejemplo n.º 1
0
    def post(self):
        subscriber_ids = self.request.get("subscriber_ids").split(",")
        for id in subscriber_ids:
            logging.debug("Updating subscriber with id %s." % id)
            subscriber_api.update_subscriber(Membership.get_by_id(int(id)))

        self.response.out.write("ok")
Ejemplo n.º 2
0
    def post(self):
        user_id = int(self.request.get("user"))
        logging.debug("Getting member with id: %d" % (user_id))
        user = Membership.get_by_id(int(self.request.get("user")))
        if not user:
          logging.error("Bad ID for member.")
          self.abort(422)

        logging.info("Sending email to %s %s." % \
                     (user.first_name, user.last_name))
        subject = "Hacker Dojo Membership: ACTION REQUIRED"

        first_name = user.first_name
        subscribe_url = user.subscribe_url()
        unsubscribe_url = user.unsubscribe_url()
        body = self.render("templates/areyoustillthere.txt", locals())

        to = "%s <%s>" % (user.full_name(), user.email)
        bcc = "%s <%s>" % ("Billing System", "*****@*****.**")
        if user.username:
            cc="%s <*****@*****.**>" % (user.full_name(), user.username),
            mail.send_mail(sender=Config().EMAIL_FROM_AYST, to=to,
                           subject=subject, body=body, bcc=bcc, cc=cc)
        else:
            mail.send_mail(sender=Config().EMAIL_FROM_AYST, to=to,
                           subject=subject, body=body, bcc=bcc)
Ejemplo n.º 3
0
 def post(self):
     user = Membership.get_by_id(int(self.request.get("user")))
     try:
       mail.send_mail(sender=Config().EMAIL_FROM,
           to=user.email,
           subject="Hi again -- from Hacker Dojo!",
           body="Hi %s,"
           "\nOur fancy membership system noted that you started filling"
           " out the Membership Signup form, but didn't complete it."
           "\nWell -- We'd love to have you as a member!"
           "\nHacker Dojo has grown by leaps and bounds in recent years."
           " Give us a try?"
           "\nIf you would like to become a member of Hacker Dojo, just"
           " complete the signup process at http://signup.hackerdojo.com"
           "\nIf you don't want to sign up -- please give us anonymous"
           " feedback so we know how we can do better!  URL:"
           " http://bit.ly/jJAGYM"
           "\nCheers!\nHacker Dojo"
           "\n\nPS: Please ignore this e-mail if you already signed up --"
           " you might have started signing up twice or something :)"
           " PPS: This is an automated e-mail and we're now deleting your"
           " e-mail address from the signup application." % (user.full_name)
       )
     except:
       noop = True
     user.delete()
Ejemplo n.º 4
0
    def post(self):
        subscriber_ids = self.request.get("subscriber_ids").split(",")
        for id in subscriber_ids:
            logging.debug("Updating subscriber with id %s." % id)
            subscriber_api.update_subscriber(Membership.get_by_id(int(id)))

        self.response.out.write("ok")
Ejemplo n.º 5
0
    def post(self):
        user_id = int(self.request.get("user"))
        logging.debug("Getting member with id: %d" % (user_id))
        user = Membership.get_by_id(int(self.request.get("user")))
        if not user:
            logging.error("Bad ID for member.")
            # Don't change the status, because we don't want it to try the request
            # again.
            return

        logging.info("Sending email to %s %s." % \
                      (user.first_name, user.last_name))
        subject = "Hacker Dojo Membership: ACTION REQUIRED"

        first_name = user.first_name
        subscribe_url = user.subscribe_url()
        unsubscribe_url = user.unsubscribe_url()
        body = self.render("templates/areyoustillthere.txt", locals())

        to = "%s <%s>" % (user.full_name(), user.email)
        bcc = "%s <%s>" % ("Billing System", "*****@*****.**")
        if user.username:
            cc = "%s <*****@*****.**>" % (user.full_name(), user.username),
            mail.send_mail(sender=Config().EMAIL_FROM_AYST,
                           to=to,
                           subject=subject,
                           body=body,
                           bcc=bcc,
                           cc=cc)
        else:
            mail.send_mail(sender=Config().EMAIL_FROM_AYST,
                           to=to,
                           subject=subject,
                           body=body,
                           bcc=bcc)
Ejemplo n.º 6
0
 def get(self, key):
     conf = Config()
     sa = conf.SPREEDLY_ACCOUNT
     u = Membership.get_by_id(int(key))
     plan_ids = plans.Plan.get_all_plan_ids()
     self.response.out.write(self.render("templates/genlink.html",
                                         locals()))
Ejemplo n.º 7
0
    def post(self, ids=None):
        subscriber_ids = self.request.get('subscriber_ids').split(',')
        c = Config()
        s = spreedly.Spreedly(c.SPREEDLY_ACCOUNT, token=c.SPREEDLY_APIKEY)
        for id in subscriber_ids:
            subscriber = s.subscriber_details(sub_id=int(id))
            logging.debug("customer_id: "+ subscriber['customer-id'])
            member = Membership.get_by_id(int(subscriber['customer-id']))
            if member:
                if member.status == 'paypal':
                    mail.send_mail(sender=EMAIL_FROM,
                        to=PAYPAL_EMAIL,
                        subject="Please cancel PayPal subscription for %s" % member.full_name(),
                        body=member.email)
                member.status = 'active' if subscriber['active'] == 'true' else 'suspended'
                if member.status == 'active' and not member.username:
                    taskqueue.add(url='/tasks/create_user', method='POST', params={'hash': member.hash}, countdown=3)
                if member.status == 'active' and member.unsubscribe_reason:
                    member.unsubscribe_reason = None
                member.spreedly_token = subscriber['token']
                member.plan = subscriber['feature-level'] or member.plan
                if not subscriber['email']:
                  subscriber['email'] = "*****@*****.**"
                member.email = subscriber['email']                
                member.put()
                # TODO: After a few months (now() = 06.13.2011), only suspend/restore if status CHANGED
                # As of right now, we can't trust previous status, so lets take action on each call to /update
                if member.status == 'active' and member.username:
                    logging.info("Restoring User: "******"Suspending User: "******"ok")
Ejemplo n.º 8
0
 def get(self, id):
     member = Membership.get_by_id(int(id))
     if member:
         self.response.out.write(
             self.render("templates/unsubscribe.html", locals()))
     else:
         self.response.out.write(
             "error: could not locate your membership record.")
Ejemplo n.º 9
0
 def post(self): 
     user = Membership.get_by_id(int(self.request.get('user')))
     subject = "What's your twitter handle?"
     base = self.request.host
     body = render('templates/twittermail.txt', locals())
     to = "%s <*****@*****.**>" % (user.full_name(), user.username)
     bcc = "%s <%s>" % ("Robot", "*****@*****.**")
     mail.send_mail(sender=EMAIL_FROM_AYST, to=to, subject=subject, body=body, bcc=bcc, html=body)
Ejemplo n.º 10
0
 def post(self): 
     user = Membership.get_by_id(int(self.request.get('user')))
     subject = "Hacker Dojo Membership: ACTION REQUIRED"
     body = render('templates/areyoustillthere.txt', locals())
     to = "%s <%s>" % (user.full_name(), user.email)
     bcc = "%s <%s>" % ("Billing System", "*****@*****.**")
     if user.username:
         cc="%s <*****@*****.**>" % (user.full_name(), user.username),
         mail.send_mail(sender=EMAIL_FROM_AYST, to=to, subject=subject, body=body, bcc=bcc, cc=cc)
     else:
         mail.send_mail(sender=EMAIL_FROM_AYST, to=to, subject=subject, body=body, bcc=bcc)
Ejemplo n.º 11
0
 def post(self, id):
     member = Membership.get_by_id(int(id))
     if member:
         unsubscribe_reason = self.request.get("unsubscribe_reason")
         if unsubscribe_reason:
             member.unsubscribe_reason = unsubscribe_reason
             member.put()
             self.response.out.write(self.render("templates/unsubscribe_thanks.html", locals()))
         else:
             self.response.out.write(self.render("templates/unsubscribe_error.html", locals()))
     else:
         self.response.out.write("error: could not locate your membership record.")
Ejemplo n.º 12
0
  def test_cleanup(self):
    response = self.test_app.post("/tasks/clean_row", self.params)
    self.assertEqual(200, response.status_int)

    # Make sure the user is gone.
    user = Membership.get_by_id(self.user_id)
    self.assertEqual(None, user)

    # Make sure our email got sent and looks correct.
    messages = self.mail_stub.get_sent_messages(to=self.user.email)
    self.assertEqual(1, len(messages))
    body = str(messages[0].body)
    self.assertIn(self.user.full_name(), body)
Ejemplo n.º 13
0
    def test_cleanup(self):
        response = self.test_app.post("/tasks/clean_row", self.params)
        self.assertEqual(200, response.status_int)

        # Make sure the user is gone.
        user = Membership.get_by_id(self.user_id)
        self.assertEqual(None, user)

        # Make sure our email got sent and looks correct.
        messages = self.mail_stub.get_sent_messages(to=self.user.email)
        self.assertEqual(1, len(messages))
        body = str(messages[0].body)
        self.assertIn(self.user.full_name(), body)
Ejemplo n.º 14
0
    def test_bad_user_id(self):
        params = {"user": "******"}
        response = self.test_app.post("/tasks/clean_row", params)
        # The status should still be okay, because we don't want it to retry in this
        # case.
        self.assertEqual(200, response.status_int)

        # The user should still be there.
        user = Membership.get_by_id(self.user_id)
        self.assertNotEqual(None, user)

        # No email should have gotten sent.
        messages = self.mail_stub.get_sent_messages(to=self.user.email)
        self.assertEqual(0, len(messages))
Ejemplo n.º 15
0
  def test_bad_user_id(self):
    params = {"user": "******"}
    response = self.test_app.post("/tasks/clean_row", params)
    # The status should still be okay, because we don't want it to retry in this
    # case.
    self.assertEqual(200, response.status_int)

    # The user should still be there.
    user = Membership.get_by_id(self.user_id)
    self.assertNotEqual(None, user)

    # No email should have gotten sent.
    messages = self.mail_stub.get_sent_messages(to=self.user.email)
    self.assertEqual(0, len(messages))
Ejemplo n.º 16
0
 def post(self, id):
     member = Membership.get_by_id(int(id))
     if member:
         unsubscribe_reason = self.request.get("unsubscribe_reason")
         if unsubscribe_reason:
             member.unsubscribe_reason = unsubscribe_reason
             member.put()
             self.response.out.write(
                 self.render("templates/unsubscribe_thanks.html", locals()))
         else:
             self.response.out.write(
                 self.render("templates/unsubscribe_error.html", locals()))
     else:
         self.response.out.write(
             "error: could not locate your membership record.")
Ejemplo n.º 17
0
    def post(self):
        user_id = self.request.get("user")
        user = Membership.get_by_id(int(user_id))
        if not user:
            logging.warning("No user with id %s." % (user_id))
            # Don't change the status, because we don't want it to retry.
            return

        logging.info("Sending email to %s." % (user.email))

        try:
            mail.send_mail(
                sender=Config().EMAIL_FROM,
                to=user.email,
                subject="Hi again -- from Hacker Dojo!",
                body="Hi %s,"
                "\nOur fancy membership system noted that you started filling"
                " out the Membership Signup form, but didn't complete it."
                "\nWell -- We'd love to have you as a member!"
                "\nHacker Dojo has grown by leaps and bounds in recent years."
                " Give us a try?"
                "\nIf you would like to become a member of Hacker Dojo, just"
                " complete the signup process at http://signup.hackerdojo.com"
                "\nIf you don't want to sign up -- please give us anonymous"
                " feedback so we know how we can do better!  URL:"
                " http://bit.ly/jJAGYM"
                "\nCheers!\nHacker Dojo"
                "\n\nPS: Please ignore this e-mail if you already signed up --"
                " you might have started signing up twice or something :)"
                " PPS: This is an automated e-mail and we're now deleting your"
                " e-mail address from the signup application." %
                (user.full_name()))
        except mail.BadRequestError:
            # Apparently, sometimes people enter bad email addresses. In this case, we
            # can just clear them silently.
            logging.warning("Deleting user with invalid email address.")

        user.delete()
Ejemplo n.º 18
0
  def post(self):
    user_id = self.request.get("user")
    user = Membership.get_by_id(int(user_id))
    if not user:
      logging.warning("No user with id %s." % (user_id))
      # Don't change the status, because we don't want it to retry.
      return

    logging.info("Sending email to %s." % (user.email))

    try:
      mail.send_mail(sender=Config().EMAIL_FROM,
          to=user.email,
          subject="Hi again -- from Hacker Dojo!",
          body="Hi %s,"
          "\nOur fancy membership system noted that you started filling"
          " out the Membership Signup form, but didn't complete it."
          "\nWell -- We'd love to have you as a member!"
          "\nHacker Dojo has grown by leaps and bounds in recent years."
          " Give us a try?"
          "\nIf you would like to become a member of Hacker Dojo, just"
          " complete the signup process at http://signup.hackerdojo.com"
          "\nIf you don't want to sign up -- please give us anonymous"
          " feedback so we know how we can do better!  URL:"
          " http://bit.ly/jJAGYM"
          "\nCheers!\nHacker Dojo"
          "\n\nPS: Please ignore this e-mail if you already signed up --"
          " you might have started signing up twice or something :)"
          " PPS: This is an automated e-mail and we're now deleting your"
          " e-mail address from the signup application." % (user.full_name())
      )
    except mail.BadRequestError:
      # Apparently, sometimes people enter bad email addresses. In this case, we
      # can just clear them silently.
      logging.warning("Deleting user with invalid email address.")

    user.delete()
Ejemplo n.º 19
0
 def get(self,key):
     c = Config()
     sa = c.SPREEDLY_ACCOUNT
     u = Membership.get_by_id(int(key))
     plans = c.PLAN_IDS
     self.response.out.write(render('templates/genlink.html', locals()))
Ejemplo n.º 20
0
 def get(self, key):
     conf = Config()
     sa = conf.SPREEDLY_ACCOUNT
     u = Membership.get_by_id(int(key))
     plan_ids = plans.Plan.get_all_plan_ids()
     self.response.out.write(self.render("templates/genlink.html", locals()))
Ejemplo n.º 21
0
 def get(self, id):
     member = Membership.get_by_id(int(id))
     if member:
         self.response.out.write(self.render("templates/unsubscribe.html", locals()))
     else:
         self.response.out.write("error: could not locate your membership record.")