def setUp(self): self.pg_web = pg_connect(SETTINGS['DATABASE_WEB_URL']) self.pg_data = pg_connect(SETTINGS['DATABASE_URL']) self.redis_data = redis.StrictRedis.from_url(SETTINGS['REDIS_URL']) self.redis_web = redis.StrictRedis.from_url(SETTINGS['REDIS_WEB_URL']) # turn on autocommit self.pg_data.autocommit = True self.pg_web.autocommit = True # always start with an empty click database cursor = self.pg_data.cursor() cursor.execute('DELETE FROM clicks;') cursor.execute('DELETE FROM urls;') cursor.execute('DELETE FROM comments;') cursor.close() # give the users some generous balance cursor = self.pg_web.cursor() cursor.execute( "UPDATE users SET balance_paid=3000, balance_free=500, total_given=0" ) # clear redis self.redis_web.flushdb() self.redis_data.flushdb()
def setUp(self): self.app = api.app.test_client() self.pg_web = pg_connect(SETTINGS['DATABASE_WEB_URL']) self.pg_data = pg_connect(SETTINGS['DATABASE_URL']) self.redis_data = redis.StrictRedis.from_url(SETTINGS['REDIS_URL']) # turn on autocommit self.pg_data.autocommit = True self.pg_web.autocommit = True # always start with an empty click database cursor = self.pg_data.cursor() cursor.execute('DELETE FROM clicks;') cursor.execute('DELETE FROM urls;') cursor.execute('DELETE FROM comments;') cursor.close() # make sure the all test users start with 0 balance, no free credit cursor = self.pg_web.cursor() cursor.execute( "UPDATE users SET balance_paid=0, balance_free=100, total_given=0") cursor.execute("SELECT id FROM users WHERE uuid=%s", ("3dd80d107941012f5e2c60c5470a09c8", )) result = cursor.fetchone() self.user_id = result[0] cursor.execute('DELETE FROM payments') # insert and process a valid click message = '{"uuid":"a2afb8a0-fc6f-11e1-b984-eff95004abc9", "user_uuid":"3dd80d107941012f5e2c60c5470a09c8", "button_uuid":"a4b16a40dff9012f5efd60c5470a09c8", "amount":25, "referrer_user_uuid":null, "referrer":"http://localhost:3000/thisisfrancis", "user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1", "ip_address":"127.0.0.1", "created_at":"' + datetime.utcnow( ).isoformat() + '"}' processor.process_message(message) # clear redis self.redis_data.flushdb()
def setUp(self): self.pg_web = pg_connect(SETTINGS['DATABASE_WEB_URL']) self.pg_data = pg_connect(SETTINGS['DATABASE_URL']) self.redis_data = redis.StrictRedis.from_url(SETTINGS['REDIS_URL']) self.redis_web = redis.StrictRedis.from_url(SETTINGS['REDIS_WEB_URL']) # turn on autocommit self.pg_data.autocommit = True self.pg_web.autocommit = True # always start with an empty click database cursor = self.pg_data.cursor() cursor.execute('DELETE FROM clicks;') cursor.execute('DELETE FROM urls;') cursor.execute('DELETE FROM comments;') cursor.close() # make sure the all test users start with 0 balance cursor = self.pg_web.cursor() cursor.execute( "UPDATE users SET balance_paid=0, balance_free=100, total_given=0") # set up a revenue share on another button cursor.execute("SELECT id FROM users WHERE uuid=%s", ("439bdb807941012f5e2d60c5470a09c8", )) result = cursor.fetchone() share_users = json.dumps([{'user': result[0], 'share_amount': 10}]) cursor.execute("UPDATE buttons SET share_users=%s WHERE uuid=%s", ( share_users, "92d1cdb0f60c012f5f3960c5470a09c8", )) # clear redis self.redis_web.flushdb() self.redis_data.flushdb()
def setUp(self): self.pg_web = pg_connect(SETTINGS['DATABASE_WEB_URL']) self.pg_data = pg_connect(SETTINGS['DATABASE_URL']) self.redis_data = redis.StrictRedis.from_url(SETTINGS['REDIS_URL']) # turn on autocommit self.pg_web.autocommit = True self.pg_data.autocommit = True # always start with an empty click database cursor = self.pg_data.cursor() cursor.execute('DELETE FROM clicks;') cursor.close() # make sure the test click users start with 0 balance cursor = self.pg_web.cursor() cursor.execute( "UPDATE users SET balance_paid=0,balance_free=100,total_given=0") # clear the redis queues self.redis_data.delete('QUEUE') self.redis_data.delete('QUEUE_PROCESSING')
def rescrape_all(): try: pg_data = pg_connect(SETTINGS['DATABASE_URL']) cursor = pg_data.cursor() cursor.execute("SELECT DISTINCT(referrer) FROM clicks") for row in cursor: enqueue_url(row[0]) except: logger.exception('Unexpected exception re-enqueing referrer urls for scraping') finally: cursor.close() pg_data.commit() pg_data.close()
# initialize logger logging.basicConfig() logger = logging.getLogger('click') if SETTINGS['PYTHON_ENV'] == 'development' or SETTINGS['PYTHON_ENV'] == 'test': logger.setLevel(logging.DEBUG) else: logger.setLevel(logging.INFO) handler = AirbrakeHandler(SETTINGS['AIRBRAKE_API_KEY'], environment=SETTINGS['PYTHON_ENV'], component_name='click', node_name='data25c') handler.setLevel(logging.ERROR) logger.addHandler(handler) # initialize postgres connections pg_data = pg_connect(SETTINGS['DATABASE_URL']) pg_web = pg_connect(SETTINGS['DATABASE_WEB_URL']) # initialize redis connections redis_data = redis.StrictRedis.from_url(SETTINGS['REDIS_URL']) redis_web = redis.StrictRedis.from_url(SETTINGS['REDIS_WEB_URL']) def validate_click(uuid, user_uuid, button_uuid, url, comment_uuid, referrer_user_uuid): cursor = None try: pg_web.autocommit = True cursor = pg_web.cursor() # validate user uuid