def get(self, url_nonce): util.EnableCors(self) user = model.User.all().filter('url_nonce =', url_nonce).get() if user is None: self.error(404) self.response.write('user not found') return num_conditional_pledges = 0 num_donations = 0 amount_pledges = 0 amount_donations = 0 for pledge in model.Pledge.all().filter('email =', user.email): if pledge.fundraisingRound == 1: continue if pledge.pledge_type == 'DONATION': num_donations += 1 amount_donations += pledge.amountCents else: num_conditional_pledges += 1 amount_pledges += pledge.amountCents pledge.pledge_type = 'DONATION' pledge.put() template_vars = { 'num_donations': num_donations, 'amount_donations': amount_donations / 100, 'num_conditional_pledges': num_conditional_pledges, 'amount_pledges': amount_pledges / 100, 'email': user.email } template = templates.GetTemplate('donation-update.html') self.response.write(template.render(template_vars))
def get(self): util.EnableCors(self) env = self.app.config['env'] if not env.stripe_public_key: raise Error('No stripe public key in DB') params = dict(testMode=(env.app_name == u'local'), stripePublicKey=env.stripe_public_key) self.response.headers['Content-Type'] = 'application/json' json.dump(params, self.response)
def post(self): """Create a new pledge, and update user info.""" util.EnableCors(self) self.response.headers['Content-Type'] = 'application/json' env = self.app.config['env'] try: data = json.loads(self.request.body) except ValueError, e: logging.warning('Bad JSON request: %s', e) self.error(400) self.response.write('Invalid request') return
def get(self, url_nonce): util.EnableCors(self) user = model.User.all().filter('url_nonce =', url_nonce).get() if user is None: self.error(404) self.response.write('user not found') return # maybe we should do sum instead? biggest_pledge = None biggest_amount = 0 for pledge in itertools.chain( model.Pledge.all().filter('email =', user.email), model.WpPledge.all().filter('email =', user.email)): if (pledge.amountCents or 0) >= biggest_amount: biggest_pledge = pledge biggest_amount = (pledge.amountCents or 0) if biggest_pledge is None: self.error(404) self.response.write("user not found") return cc_user_name = None cc_zip_code = None stripe.api_key = env.get_env().stripe_backend.stripe_private_key if biggest_pledge.stripeCustomer: cus = stripe.Customer.retrieve(biggest_pledge.stripeCustomer) if len(cus.sources.data) > 0: cc_user_name = cus.sources.data[0].name cc_zip_code = cus.sources.data[0].address_zip if user.first_name or user.last_name: # TODO(jt): we should backfill this information user_name = "%s %s" % (user.first_name or "", user.last_name or "") else: user_name = cc_user_name zip_code = cc_zip_code self.response.headers['Content-Type'] = 'application/javascript' self.response.write( json.dumps({ "user": { "name": user_name, "email": user.email, "pledge_amount_cents": biggest_amount, "zip_code": zip_code } }))
def post(self): data = json.loads(self.request.body) ascii_name = data["name"].encode('ascii', errors='ignore') ascii_email = data["email"].encode('ascii', errors='ignore') ascii_subject = data["subject"].encode('ascii', errors='ignore') ascii_body = data["body"].encode('ascii', errors='ignore') replyto = '%s <%s>' % (ascii_name, ascii_email) message = mail.EmailMessage( sender=('MayOne no-reply <noreply@%s.appspotmail.com>' % model.Config.get().app_name), reply_to=replyto, subject=ascii_subject) message.to = "*****@*****.**" message.body = 'FROM: %s\n\n%s' % (ascii_email, ascii_body) message.send() util.EnableCors(self) self.response.write('Ok.')
def post(self): env = self.app.config['env'] util.EnableCors(self) email, candidates = json.loads(self.request.body).popitem() for candidate in candidates: model.CandidateVote.tally(email, candidate) # need to change this to use the actual name format_kwargs = { 'name': email.encode('utf-8'), } text_body = open('email/voting-thank-you.txt').read().format( **format_kwargs) html_body = open('email/voting-thank-you.html').read().format( **format_kwargs) env.mail_sender.Send(to=email.encode('utf-8'), subject='Thanks for voting', text_body=text_body, html_body=html_body)
def post(self): env = self.app.config['env'] util.EnableCors(self) email, issues = json.loads(self.request.body).popitem() for issue in issues: model.IssueVote.tally(email, issue) # need to change this to use the actual name format_kwargs = { 'name': email.encode('utf-8'), } text_body = open('email/issue-survey-response.txt').read().format( **format_kwargs) html_body = open('email/issue-survey-response.html').read().format( **format_kwargs) env.mail_sender.Send(to=email.encode('utf-8'), subject='Thank you for making your voice heard', text_body=text_body, html_body=html_body)
def get(self, url_nonce): util.EnableCors(self) user = model.User.all().filter('url_nonce =', url_nonce).get() if user is None: self.error(404) self.response.write('user not found') return num_donations = 0 amount_donations = 0 for pledge in model.Pledge.all().filter('email =', user.email): num_donations += 1 amount_donations += pledge.amountCents pledge.allowUpton = True pledge.put() template_vars = { 'num_donations': num_donations, 'amount_donations': amount_donations / 100, 'email': user.email } template = templates.GetTemplate('upton-update.html') self.response.write(template.render(template_vars))
def post(self): util.EnableCors(self) env = self.app.config['env'] logging.info('body: %s' % self.request.body) email_input = cgi.escape(self.request.get('email')) if len(email_input) == 0: logging.warning("Bad Request: required field (email) missing.") self.error(400) return redirect_input = cgi.escape(self.request.get('redirect')) dont_redirect = cgi.escape(self.request.get('dont_redirect')) if dont_redirect != '': dont_redirect = True if redirect_input != '': dont_redirect = False is_supporter = cgi.escape(self.request.get('is_supporter')) if type(is_supporter) != bool: is_supporter = False first_name = cgi.escape(self.request.get('first_name')) if len(first_name) == 0: first_name = None last_name = cgi.escape(self.request.get('last_name')) if len(last_name) == 0: last_name = None phone_input = cgi.escape(self.request.get('phone')) if len(phone_input) == 0: phone_input = None zipcode_input = cgi.escape(self.request.get('zipcode')) if len(zipcode_input) == 0: zipcode_input = None phone_input = cgi.escape(self.request.get('phone')) if len(phone_input) == 0: phone_input = None volunteer_input = cgi.escape( self.request.get('volunteer')) # "YES" or "NO" if volunteer_input == 'Yes': volunteer_input = 'Yes' format_kwargs = {'name': email_input.encode('utf-8')} if first_name != '': format_kwargs['name'] = first_name text_body = open('email/volunteer-thank-you.txt').read().format( **format_kwargs) html_body = open('email/volunteer-thank-you.html').read().format( **format_kwargs) env.mail_sender.Send( to=email_input.encode('utf-8'), subject='Thank you for signing up to volunteer', text_body=text_body, html_body=html_body) elif volunteer_input == 'off': volunteer_input = '' # Free text, limited to 255 char skills_input = cgi.escape(self.request.get('skills')) if len(skills_input) == 0: skills_input = None rootstrikers_input = cgi.escape( self.request.get('rootstrikers')) # Free text, limited to 255 char if rootstrikers_input == 'on': rootstrikers_input = 'Yes' elif rootstrikers_input == 'off': rootstrikers_input = '' source_input = cgi.escape(self.request.get('source')) if len(source_input) == 0: source_input = 'subscribe' pledgePageSlug_input = cgi.escape(self.request.get('pledgePageSlug')) if len(pledgePageSlug_input) == 0: pledgePageSlug_input = '' otherVars = {} # get any parameter that looks like MERGE something for argName in self.request.arguments(): if argName.startswith('MERGE'): arg = self.request.get(argName) otherVars[argName] = arg NationBuilderVars = {} for argName in self.request.arguments(): if argName.startswith('NationBuilder'): arg = self.request.get(argName) NationBuilderVars[argName[13:]] = arg env.mailing_list_subscriber.Subscribe( email=email_input, first_name=first_name, last_name=last_name, amount_cents=None, ip_addr=self.request.remote_addr, time=datetime.datetime.now(), source=source_input, phone=phone_input, zipcode=zipcode_input, volunteer=volunteer_input, skills=skills_input, rootstrikers=rootstrikers_input, pledgePageSlug=pledgePageSlug_input, otherVars=otherVars, is_supporter=is_supporter, nationBuilderVars=NationBuilderVars) if dont_redirect == False: if len(redirect_input) > 0: redirect_url = '%s?email=%s&source=%s' % ( redirect_input, email_input, source_input) else: redirect_url = '/donate?email=%s' % email_input self.redirect(str(redirect_url)) else: pass
def options(self): util.EnableCors(self)
def get(self): util.EnableCors(self) self.response.headers['Content-Type'] = 'application/json' json.dump(dict({}), self.response) # TODO -- return something sensible
def post(self): util.EnableCors(self) email, candidates = json.loads(self.request.body).popitem() for candidate in candidates: model.CandidateVote.tally(email, candidate)
def post(self): util.EnableCors(self) email, issues = json.loads(self.request.body).popitem() for issue in issues: model.IssueVote.tally(email, issue)
def post(self): env = self.app.config['env'] logging.info('body: %s' % self.request.body) email_input = cgi.escape(self.request.get('email')) if len(email_input) == 0: logging.warning("Bad Request: required field (email) missing.") self.error(400) return first_name = cgi.escape(self.request.get('first_name')) if len(first_name) == 0: first_name = None last_name = cgi.escape(self.request.get('last_name')) if len(last_name) == 0: last_name = None phone_input = cgi.escape(self.request.get('phone')) if len(phone_input) == 0: phone_input = None zipcode_input = cgi.escape(self.request.get('zipcode')) if len(zipcode_input) == 0: zipcode_input = None phone_input = cgi.escape(self.request.get('phone')) if len(phone_input) == 0: phone_input = None volunteer_input = cgi.escape( self.request.get('volunteer')) # "YES" or "NO" if volunteer_input == 'on': volunteer_input = 'Yes' elif volunteer_input == 'off': volunteer_input = '' skills_input = cgi.escape( self.request.get('skills')) #Free text, limited to 255 char if len(skills_input) == 0: skills_input = None rootstrikers_input = cgi.escape( self.request.get('rootstrikers')) #Free text, limited to 255 char if rootstrikers_input == 'on': rootstrikers_input = 'Yes' elif rootstrikers_input == 'off': rootstrikers_input = '' source_input = cgi.escape(self.request.get('source')) if len(source_input) == 0: source_input = 'subscribe' pledgePageSlug_input = cgi.escape(self.request.get('pledgePageSlug')) if len(pledgePageSlug_input) == 0: pledgePageSlug_input = '' otherVars = {} # get any parameter that looks like MERGE something for argName in self.request.arguments(): if argName.startswith('MERGE'): arg = self.request.get(argName) otherVars[argName] = arg env.mailing_list_subscriber.Subscribe( email=email_input, first_name=first_name, last_name=last_name, amount_cents=None, ip_addr=self.request.remote_addr, time=datetime.datetime.now(), source=source_input, phone=phone_input, zipcode=zipcode_input, volunteer=volunteer_input, skills=skills_input, rootstrikers=rootstrikers_input, pledgePageSlug=pledgePageSlug_input, otherVars=otherVars) util.EnableCors(self) redirect_input = cgi.escape(self.request.get('redirect')) if len(redirect_input) > 0: redirect_url = '%s?email=%s&source=%s' % ( redirect_input, email_input, source_input) else: redirect_url = '/pledge?email=%s' % email_input self.redirect(str(redirect_url))