def post(self): logging.info('Beginning new Pledge POST...') """ Submit and process submitted pledges. """ form = PledgeLanding(self.request) try: logging.debug('Beginning validation...') if form.validate(): logging.debug('Validation passed.') u_key = str(form.u_key.data).strip('=') u_fbid = str(form.u_fbid.data).strip('=') action = str(form.u_action.data) u_next_action = str(form.u_nextAction.data) u_prev_action = str(form.u_prevAction.data) firstname = str(form.firstname.data) lastname = str(form.lastname.data) email = str(form.email.data) phone = str(form.phone.data) message = str(form.message.data) logging.info('Submitted form POST data follows...') logging.info('action = '+action) logging.info('next = '+u_next_action) logging.info('prev = '+u_prev_action) logging.info('key = '+u_key) logging.info('firstname = '+firstname) logging.info('lastname = '+lastname) logging.info('email = '+email) logging.info('phone = '+phone) logging.info('message = '+message) if action is not False: logging.debug('Action valid.') if u_key is not False: ## Use Key or FBID, whichever exists if u_key == '' or u_key is None: if u_fbid == '' or u_key is None: abort(400) logging.error('Request failed because both fbid and key are missing.') return Response('<b>Must provide FBID or U_KEY.') else: logging.info('Using FBID to identify user.') u = FacebookUser.get_by_key_name(u_fbid) else: logging.info('Using KEY to identify user.') u = db.get(db.Key(u_key)) logging.info('User record: '+str(u)) u.firstname = firstname u.lastname = lastname u.email = email u.phone = phone u.has_pledged = True p = Pledge(u, user=u, personal_message=message) db.put([u, p]) logging.debug('Put pledge and updated user.') if u_next_action is not False: logging.debug('Redirecting to next action...') return redirect(u_next_action) else: logging.error('Couldn\'t retrieve key. Exiting 404.') abort(404) else: logging.error('Missing action. Exiting 400.') abort(400) except ValidationError, e: logging.error('Form validation failed. Redirecting with error text.') self.redirect(self.request.headers.get('referrer')+'&validationError=true&error='+urllib2.urlencode(str(e.message)))
def post(self): logging.info('Beginning new Pledge POST...') """ Submit and process submitted pledges. """ form = PledgeLanding(self.request) try: logging.debug('Beginning validation...') if form.validate(): logging.debug('Validation passed.') u_key = str(form.u_key.data).strip('=') u_fbid = str(form.u_fbid.data).strip('=') u_next_action = str(form.u_nextAction.data) u_lists = form.u_lists.data u_prev_action = str(form.u_prevAction.data) firstname = str(form.firstname.data) lastname = str(form.lastname.data) email = str(form.email.data) phone = str(form.phone.data) zipcode = str(form.zipcode.data) message = str(form.message.data) logging.info('Submitted form POST data follows...') logging.info('next = '+u_next_action) logging.info('lists = '+str(u_lists)) logging.info('prev = '+u_prev_action) logging.info('key = '+u_key) logging.info('firstname = '+firstname) logging.info('lastname = '+lastname) logging.info('email = '+email) logging.info('phone = '+phone) logging.info('zipcode = '+zipcode) logging.info('message = '+message) logging.debug('Action valid.') ## Use Key or FBID, whichever exists if u_key == '' or u_key is None: if u_fbid == '' or u_key is None: logging.info('Creating anonymous microsite user.') u = MicrositeUser() else: logging.info('Using FBID to identify user.') u = FacebookUser.get_by_key_name(u_fbid) else: logging.info('Using KEY to identify user.') u = db.get(db.Key(u_key)) logging.info('User record: '+str(u)) u.firstname = firstname u.lastname = lastname u.email = email u.phone = phone u.zipcode = int(zipcode) u.has_pledged = True if not u.is_saved(): u.put() memberships = [] if isinstance(u_lists, list) and len(u_lists) > 0: for list_item in u_lists: memberships.append(ListMember(user=u, list=db.Key(list_item), opted_in=True)) p = Pledge(u, user=u, personal_message=message) db.put([u, p]+memberships) logging.debug('Put pledge, updated user, and list memberships.') if u_next_action is not False: logging.debug('Redirecting to next action...') return redirect(u_next_action) except ValidationError, e: logging.error('Form validation failed. Redirecting with error text.') self.redirect(self.request.headers.get('referrer')+'&validationError=true&error='+urllib2.urlencode(str(e.message)))