コード例 #1
0
    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)))
コード例 #2
0
    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)))