Exemplo n.º 1
0
	def post(self,*args,**kwargs):
		#RESTRICTED
		try:
			logging.debug(kwargs)
			email = kwargs.get('email',None)
			alias = kwargs.get('alias',None)
			pw = kwargs.get('pw',None)
			
			'''Check availability of username+pass, create and login if not taken'''
			#check availabilities
			r_email = levr.Customer.gql('WHERE email = :1',email).get()
			r_alias  = levr.Customer.gql('WHERE alias = :1',alias).get()
			
			#if taken, send error
			if r_email:
				api_utils.send_error(self,'That email is already registered.')
				return
			if r_alias:
				api_utils.send_error(self,'That alias is already registered.')
				return
			
			#still here? create a customer, then.
			user = levr.create_new_user(
									email=email,
									alias=alias,
									pw=enc.encrypt_password(pw))
			#put and reply
			
			#create or refresh the alias
			user = levr.build_display_name(user)
			
			try:
				levr.text_notify(user.display_name+' from Levr!')
			except:
				levr.log_error()
			
			
			#put and reply
			user.put()
			
			
			response = {'user':api_utils.package_user(user,True,send_token=True)}
			api_utils.send_response(self,response,user)
		except:
			levr.log_error()
			api_utils.send_error(self,'Server Error')
Exemplo n.º 2
0
    def __init__(self, user=None, *args, **kwargs):
        '''
		Foursquare
		'''
        logging.debug('\n\n\n \t\t\t INIT FOURSQUARE \n\n\n')
        #set the foursquare api version
        self.version = '20121007'  #the foursquare api version

        if 'debug' in args:
            foursquare_token = kwargs.get('foursquare_token')
            self.foursquare_token = foursquare_token

        if not user:
            #user was not passed, check to make sure that the user does not already exist
            # if the user exists, pass it to SocialClass.__init__
            # otherwise, create a new user and pass it that
            foursquare_token = kwargs.get('foursquare_token')
            #make sure foursquare token was passed
            assert foursquare_token, 'Did not pass a user, so must pass foursquare_token as kwarg'

            #assign the foursquare_token so that self.fetch will work
            self.foursquare_token = foursquare_token
            #fetch the user info
            response = self.fetch('')
            logging.debug(levr.log_dict(response))
            #get the user id
            foursquare_id = int(response['response']['user']['id'])

            #search for the user by that id
            user = levr.Customer.all().filter('foursquare_id',
                                              foursquare_id).get()
            #			logging.debug('\n\n\n\n \t\t\t\t USER \n\n\n\n')
            logging.debug(user)
            logging.debug(levr.log_model_props(user))
            if not user:
                logging.debug('user doesnt exist')
                #user does not exist in database - create a new one!
                user = levr.create_new_user()
            else:
                logging.debug('user exists')
            # else: user was found and we will init with that user

        #init all dat social stuff!
        SocialClass.__init__(self, user, *args, **kwargs)
Exemplo n.º 3
0
    def post(self, *args, **kwargs):
        #RESTRICTED
        try:
            logging.debug(kwargs)
            email = kwargs.get('email', None)
            alias = kwargs.get('alias', None)
            pw = kwargs.get('pw', None)
            '''Check availability of username+pass, create and login if not taken'''
            #check availabilities
            r_email = levr.Customer.gql('WHERE email = :1', email).get()
            r_alias = levr.Customer.gql('WHERE alias = :1', alias).get()

            #if taken, send error
            if r_email:
                api_utils.send_error(self, 'That email is already registered.')
                return
            if r_alias:
                api_utils.send_error(self, 'That alias is already registered.')
                return

            #still here? create a customer, then.
            user = levr.create_new_user(email=email,
                                        alias=alias,
                                        pw=enc.encrypt_password(pw))
            #put and reply

            #create or refresh the alias
            user = levr.build_display_name(user)

            try:
                levr.text_notify(user.display_name + ' from Levr!')
            except:
                levr.log_error()

            #put and reply
            user.put()

            response = {
                'user': api_utils.package_user(user, True, send_token=True)
            }
            api_utils.send_response(self, response, user)
        except:
            levr.log_error()
            api_utils.send_error(self, 'Server Error')
Exemplo n.º 4
0
	def __init__(self, user=None, *args, **kwargs):
		'''
		Foursquare
		'''
		logging.debug('\n\n\n \t\t\t INIT FOURSQUARE \n\n\n')
		#set the foursquare api version
		self.version = '20121007' #the foursquare api version
		
		if 'debug' in args:
			foursquare_token = kwargs.get('foursquare_token')
			self.foursquare_token = foursquare_token
		
		if not user:
			#user was not passed, check to make sure that the user does not already exist
			# if the user exists, pass it to SocialClass.__init__
			# otherwise, create a new user and pass it that
			foursquare_token = kwargs.get('foursquare_token')
			#make sure foursquare token was passed
			assert foursquare_token, 'Did not pass a user, so must pass foursquare_token as kwarg'
			
			#assign the foursquare_token so that self.fetch will work
			self.foursquare_token = foursquare_token
			#fetch the user info
			response = self.fetch('')
			logging.debug(levr.log_dict(response))
			#get the user id
			foursquare_id = int(response['response']['user']['id'])
			
			#search for the user by that id
			user = levr.Customer.all().filter('foursquare_id',foursquare_id).get()
#			logging.debug('\n\n\n\n \t\t\t\t USER \n\n\n\n')
			logging.debug(user)
			logging.debug(levr.log_model_props(user))
			if not user:
				logging.debug('user doesnt exist')
				#user does not exist in database - create a new one!
				user = levr.create_new_user()
			else:
				logging.debug('user exists')
			# else: user was found and we will init with that user
		
		#init all dat social stuff!
		SocialClass.__init__(self, user, *args, **kwargs)
Exemplo n.º 5
0
	def __init__(self, user=None, *args, **kwargs):
		'''
		Twitter
		'''
		logging.debug('\n\n\n \t\t\t INIT Twitter \n\n\n')
		self.set_noise_level(*args)
		# if user is not passed, then check if a user exists with the identity specified. if they do not exist, then create a new one
		if not user:
			#user was not passed, check to make sure that the user does not already exist
			# if the user exists, pass it to SocialClass.__init__
			# otherwise, create a new user and pass it that
			twitter_id				= int(kwargs.get('twitter_id'))
#			twitter_token			= kwargs.get('twitter_token')
#			twitter_token_secret	= kwargs.get('twitter_token_secret')
			
			#make sure necessary credentials were passed
			assert twitter_id, 'Did not pass a user, so must pass twitter_id as kwarg'
#			assert twitter_token, 'Did not pass a user, so must pass twitter_token as kwarg'
#			assert twitter_token_secret, 'Did not pass a user, so must pass twitter_token_secret as kwarg'
			
			#search for the user by that id
			user = levr.Customer.all().filter('twitter_id',twitter_id).get()
			
#			#fetch the user info
#			response = self.fetch('user')
#			logging.debug(levr.log_dict(response))
#			
			
			logging.debug(levr.log_model_props(user))
			if not user:
				logging.debug('user doesnt exist')
				#user does not exist in database - create a new one!
				user = levr.create_new_user()
			else:
				logging.debug('user exists')
			# else: user was found and we will init with that user
		
		#init all dat social stuff!
		assert user, 'User is not passed, and it is not being created'
		SocialClass.__init__(self, user, *args, **kwargs)
Exemplo n.º 6
0
    def __init__(self, user=None, *args, **kwargs):
        '''
		Twitter
		'''
        logging.debug('\n\n\n \t\t\t INIT Twitter \n\n\n')
        self.set_noise_level(*args)
        # if user is not passed, then check if a user exists with the identity specified. if they do not exist, then create a new one
        if not user:
            #user was not passed, check to make sure that the user does not already exist
            # if the user exists, pass it to SocialClass.__init__
            # otherwise, create a new user and pass it that
            twitter_id = int(kwargs.get('twitter_id'))
            #			twitter_token			= kwargs.get('twitter_token')
            #			twitter_token_secret	= kwargs.get('twitter_token_secret')

            #make sure necessary credentials were passed
            assert twitter_id, 'Did not pass a user, so must pass twitter_id as kwarg'
            #			assert twitter_token, 'Did not pass a user, so must pass twitter_token as kwarg'
            #			assert twitter_token_secret, 'Did not pass a user, so must pass twitter_token_secret as kwarg'

            #search for the user by that id
            user = levr.Customer.all().filter('twitter_id', twitter_id).get()

            #			#fetch the user info
            #			response = self.fetch('user')
            #			logging.debug(levr.log_dict(response))
            #

            logging.debug(levr.log_model_props(user))
            if not user:
                logging.debug('user doesnt exist')
                #user does not exist in database - create a new one!
                user = levr.create_new_user()
            else:
                logging.debug('user exists')
            # else: user was found and we will init with that user

        #init all dat social stuff!
        assert user, 'User is not passed, and it is not being created'
        SocialClass.__init__(self, user, *args, **kwargs)
Exemplo n.º 7
0
	def __init__(self, user=None, *args, **kwargs):
		'''
		Facebook
		'''
		logging.debug('\n\n\n \t\t\t INIT FACEBOOK \n\n\n')
		self.set_noise_level(*args)
		# if user is not passed, then check if a user exists with the identity specified. if they do not exist, then create a new one
		if not user:
			#user was not passed, check to make sure that the user does not already exist
			# if the user exists, pass it to SocialClass.__init__
			# otherwise, create a new user and pass it that
			facebook_token = kwargs.get('facebook_token')
			#make sure foursquare token was passed
			assert facebook_token, 'Did not pass a user, so must pass facebook_token as kwarg'
			
			#assign the foursquare_token so that self.fetch will work
			self.facebook_token = facebook_token
			#fetch the user info from facebook
			response = self.fetch('user')
			logging.debug(levr.log_dict(response))
			#get the user id from the remote api call
			facebook_id = int(response['id'])
			
			#search for the user in our db by that id
			user = levr.Customer.all().filter('facebook_id',facebook_id).get()
#			logging.debug('\n\n\n\n \t\t\t\t USER \n\n\n\n')
			logging.debug(user)
			logging.debug(levr.log_model_props(user))
			if not user:
				logging.debug('user doesnt exist')
				#user does not exist in database - create a new one!
				user = levr.create_new_user()
			else:
				logging.debug('user exists')
			# else: user was found and we will init with that user
		logging.debug(user)
		
		#init all dat social stuff!
		SocialClass.__init__(self, user, *args, **kwargs)
Exemplo n.º 8
0
    def __init__(self, user=None, *args, **kwargs):
        '''
		Facebook
		'''
        logging.debug('\n\n\n \t\t\t INIT FACEBOOK \n\n\n')
        self.set_noise_level(*args)
        # if user is not passed, then check if a user exists with the identity specified. if they do not exist, then create a new one
        if not user:
            #user was not passed, check to make sure that the user does not already exist
            # if the user exists, pass it to SocialClass.__init__
            # otherwise, create a new user and pass it that
            facebook_token = kwargs.get('facebook_token')
            #make sure foursquare token was passed
            assert facebook_token, 'Did not pass a user, so must pass facebook_token as kwarg'

            #assign the foursquare_token so that self.fetch will work
            self.facebook_token = facebook_token
            #fetch the user info from facebook
            response = self.fetch('user')
            logging.debug(levr.log_dict(response))
            #get the user id from the remote api call
            facebook_id = int(response['id'])

            #search for the user in our db by that id
            user = levr.Customer.all().filter('facebook_id', facebook_id).get()
            #			logging.debug('\n\n\n\n \t\t\t\t USER \n\n\n\n')
            logging.debug(user)
            logging.debug(levr.log_model_props(user))
            if not user:
                logging.debug('user doesnt exist')
                #user does not exist in database - create a new one!
                user = levr.create_new_user()
            else:
                logging.debug('user exists')
            # else: user was found and we will init with that user
        logging.debug(user)

        #init all dat social stuff!
        SocialClass.__init__(self, user, *args, **kwargs)
Exemplo n.º 9
0
	def post(self,*args,**kwargs): #@UnusedVariable
		'''
		Checks for existing account with that business
		If the account exists, return true
		
		@attention: Only handles the case where a single account is tied to no more than one business
		
		@keyword email: required
		@keyword password: required
		@keyword business_name: required
		@keyword vicinity: required
		@keyword geo_point: required
		@keyword types: require
		@keyword development: optional
		
		@return: packaged_user with levrToken, packaged_business
		'''
		# for invalid credential responses
		user_doesnt_own_business_message = 'User does not own that business'
		# for packaging
		private = True
		followers = False
		
		# input values
		email = kwargs.get('email')
		password = kwargs.get('pw')
		business_name = kwargs.get('businessName')
		vicinity = kwargs.get('vicinity')
		geo_point = kwargs.get('geoPoint')
		types = kwargs.get('types')
		development = kwargs.get('development',False) # TODO: switch this to False by default when changing to live
		phone_number = kwargs.get('phoneNumber','')
		try:
			# Convert input data
			password = enc.encrypt_password(password)
			types = types.split(',')
			
			logging.debug('{}\n{}\n{}\n{}'.format(repr(business_name),repr(vicinity),geo_point,repr(types)))
			
			# check for existing entities
			user = levr.Customer.all().filter('email',email).get()
			requested_business = levr.Business.all().filter('business_name',business_name).filter('vicinity',vicinity).get()
			
			if user:
				logging.info('User exists')
				# check password
				assert user.pw == password, 'Password does not match username'
				
				# user should have a business
				try:
					business = user.businesses.get()
					# if the user has a business, it should be the business that was requested
					assert business, 'User does not own any businesses yet'
				except:
					logging.debug('user does not have a business yet - create one')
					# if the user does not have a business yet, add this one.
					business = levr.create_new_business(business_name,vicinity,geo_point,types,phone_number,
													owner=user
													)
#					assert False, user_doesnt_own_business_message
				else:
					logging.debug('User owns a business')
#					logging.debug(levr.log_model_props(business.owner))
#					logging.debug(levr.log_model_props(requested_business.owner))
#					if requested_business:
#						assert business.key() == requested_business.key(), user_doesnt_own_business_message
			else:
				logging.debug('User does not exist. Create a new one!!')
				# Create an account for the user with that business
				user = levr.create_new_user(
										tester=development,
										pw=password,
										email=email,
										display_name=business_name,
										)
				logging.debug(business_name)
				logging.debug(levr.log_model_props(user))
				if not requested_business:
					logging.debug('requested business was not found')
					business = levr.create_new_business(business_name,vicinity,geo_point,types,phone_number,
													owner=user
													)
				else:
					logging.debug('requested business was found')
					business = requested_business
					# 
					business.owner = user
					business.put()
			
			logging.debug('business: '+repr(business))
			#===================================================================
			# # Send message to the founders that someone has signed up for the app
			#===================================================================
			if not development:
				try:
					from google.appengine.api import mail
					message = mail.AdminEmailMessage(
													sender = '*****@*****.**',
													subject = 'New Merchant',
													)
					message.body = levr.log_model_props(user,['email','display_name',])
					message.body += levr.log_model_props(business,['business_name','vicinity'])
					message.check_initialized()
					message.send()
					
				except:
					levr.log_error()
			
			#===================================================================
			# # package and send
			#===================================================================
			packaged_user = api_utils.package_user(user, private, followers,send_token=True)
			packaged_business = api_utils.package_business(business)
			response = {
					'user' : packaged_user,
					'business' : packaged_business
					}
			self.send_response(response)
			# TODO: Merchant connect - handle all cases - new and existing accounts
		except AssertionError,e:
			levr.log_error()
			self.send_error(e)
Exemplo n.º 10
0
    def post(self, *args, **kwargs):  #@UnusedVariable
        '''
		Checks for existing account with that business
		If the account exists, return true
		
		@attention: Only handles the case where a single account is tied to no more than one business
		
		@keyword email: required
		@keyword password: required
		@keyword business_name: required
		@keyword vicinity: required
		@keyword geo_point: required
		@keyword types: require
		@keyword development: optional
		
		@return: packaged_user with levrToken, packaged_business
		'''
        # for invalid credential responses
        user_doesnt_own_business_message = 'User does not own that business'
        # for packaging
        private = True
        followers = False

        # input values
        email = kwargs.get('email')
        password = kwargs.get('pw')
        business_name = kwargs.get('businessName')
        vicinity = kwargs.get('vicinity')
        geo_point = kwargs.get('geoPoint')
        types = kwargs.get('types')
        development = kwargs.get(
            'development', False
        )  # TODO: switch this to False by default when changing to live
        phone_number = kwargs.get('phoneNumber', '')
        try:
            # Convert input data
            password = enc.encrypt_password(password)
            types = types.split(',')

            logging.debug('{}\n{}\n{}\n{}'.format(repr(business_name),
                                                  repr(vicinity), geo_point,
                                                  repr(types)))

            # check for existing entities
            user = levr.Customer.all().filter('email', email).get()
            requested_business = levr.Business.all().filter(
                'business_name', business_name).filter('vicinity',
                                                       vicinity).get()

            if user:
                logging.info('User exists')
                # check password
                assert user.pw == password, 'Password does not match username'

                # user should have a business
                try:
                    business = user.businesses.get()
                    # if the user has a business, it should be the business that was requested
                    assert business, 'User does not own any businesses yet'
                except:
                    logging.debug(
                        'user does not have a business yet - create one')
                    # if the user does not have a business yet, add this one.
                    business = levr.create_new_business(business_name,
                                                        vicinity,
                                                        geo_point,
                                                        types,
                                                        phone_number,
                                                        owner=user)
#					assert False, user_doesnt_own_business_message
                else:
                    logging.debug('User owns a business')


#					logging.debug(levr.log_model_props(business.owner))
#					logging.debug(levr.log_model_props(requested_business.owner))
#					if requested_business:
#						assert business.key() == requested_business.key(), user_doesnt_own_business_message
            else:
                logging.debug('User does not exist. Create a new one!!')
                # Create an account for the user with that business
                user = levr.create_new_user(
                    tester=development,
                    pw=password,
                    email=email,
                    display_name=business_name,
                )
                logging.debug(business_name)
                logging.debug(levr.log_model_props(user))
                if not requested_business:
                    logging.debug('requested business was not found')
                    business = levr.create_new_business(business_name,
                                                        vicinity,
                                                        geo_point,
                                                        types,
                                                        phone_number,
                                                        owner=user)
                else:
                    logging.debug('requested business was found')
                    business = requested_business
                    #
                    business.owner = user
                    business.put()

            logging.debug('business: ' + repr(business))
            #===================================================================
            # # Send message to the founders that someone has signed up for the app
            #===================================================================
            if not development:
                try:
                    from google.appengine.api import mail
                    message = mail.AdminEmailMessage(
                        sender='*****@*****.**',
                        subject='New Merchant',
                    )
                    message.body = levr.log_model_props(
                        user, [
                            'email',
                            'display_name',
                        ])
                    message.body += levr.log_model_props(
                        business, ['business_name', 'vicinity'])
                    message.check_initialized()
                    message.send()

                except:
                    levr.log_error()

            #===================================================================
            # # package and send
            #===================================================================
            packaged_user = api_utils.package_user(user,
                                                   private,
                                                   followers,
                                                   send_token=True)
            packaged_business = api_utils.package_business(business)
            response = {'user': packaged_user, 'business': packaged_business}
            self.send_response(response)
            # TODO: Merchant connect - handle all cases - new and existing accounts
        except AssertionError, e:
            levr.log_error()
            self.send_error(e)