def _on_auth(self, user=None): logging.info('User == '+str(user)) logging.debug('OnAuth: Beginning.') session = self.request.args.get('session', False) logging.debug('OnAuth: Session = '+str(session)) if session is False: abort(403) else: session_obj = json.loads(session) logging.debug('OnAuth: Decoded session object follows...') logging.debug('OnAuth: '+str(session_obj)) u = memcache.get(str(session_obj['session_key'])) if u is None: u = FacebookUser.get_by_key_name(str(session_obj['uid'])) logging.debug('OnAuth: u 1st round = '+str(u)) if u is None: u = FacebookUser(key_name=str(session_obj['uid']), uid=str(session_obj['uid'])).put() logging.debug('OnAuth: u 2nd round = '+str(u)) logging.debug('OnAuth: u 3rd round = '+str(u)) logging.debug('OnAuth: UID = '+str(session_obj['uid'])) logging.debug('OnAuth: KEY = '+str(session_obj['session_key'])) memcache.set(str(session_obj['uid']), u, time=3600) success_get = self.request.args.get('pledgeSuccess', False) if isinstance(u, db.Key): u_key_val = str(u) elif isinstance(u, db.Model): u_key_val = str(u.key()) page_content_vars = { #'invites_form':EmailInvites(self.request), 'pledge_form':PledgeLanding(self.request), 'fb_app_id':config.config['tipfy.ext.auth.facebook']['api_key'], 'u_key':u_key_val, 'pledgeSuccess':success_get, 'debug':True, 'dev':{'getvars':self.request.args.items(multi=True),'postvars':self.request.form.items(multi=True)} } return render_response('microsite.html', **page_content_vars)
def get_fb_session(request): session = request.args.get('session', None) if session is not None: session_obj = json.loads(session) u = memcache.get(str(session_obj['session_key'])) if u is None: u = FacebookUser.get_by_key_name(str(session_obj['uid'])) if u is None: u = FacebookUser(key_name=str(session_obj['uid']), uid=str(session_obj['uid']), app_installed=installed).put() memcache.set(str(session_obj['uid']), u, time=3600) return session_obj, u else: abort(403)
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 outgoing email POST...') form = EmailInvites(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('=') message = str(form.message.data) email_1 = str(form.email_1.data) email_2 = str(form.email_2.data) email_3 = str(form.email_3.data) email_4 = str(form.email_4.data) email_5 = str(form.email_5.data) logging.info('Submitted form POST data follows...') logging.info('key = '+u_key) logging.info('email 1 = '+email_1) logging.info('email 2 = '+email_2) logging.info('email 3 = '+email_3) logging.info('email 4 = '+email_4) logging.info('email 5 = '+email_5) logging.info('message = '+message) emails = [email_1, email_2, email_3, email_4, email_5] 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)) if message == '' or message is None: message = 'Sign up for YVR today! (DEVTEST)' tickets = [] for email in emails: if mail.is_email_valid(email): tickets.append(OutboundEmail(user=u, to_email=email, subject='(DEV) YV Outbound Email', message=message)) keys = db.put(tickets) tasks = [] for item in keys: t = taskqueue.Task(url='/_api/mail/send', params={'ticket':str(item)}).add(queue_name='outbound-mail') else: logging.error('Couldn\'t retrieve key. Exiting 404.') abort(404) 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)))