def do_sync(args): LOGGER.info("Starting sync.") global configs configs = load_config(args.config) config = configs.get("api_credentials") campaign_sync_start_date = None if args.start_date is None else args.start_date campaign_sync_end_date = None if args.start_date is None else args.end_date access_token = generate_token( client_id=config.get('client_id'), client_secret=config.get('client_secret'), username=config.get('username'), password=config.get('password')) allowed_accounts = sync_allowed_accounts(access_token) if(allowed_accounts): for allowed_account in allowed_accounts: partner_types = allowed_account.get("partner_types").split(",") account_id = allowed_account.get("account_id","") # Check if partner types have values ADVERTISER if('ADVERTISER' in partner_types): LOGGER.info("Fetching campaign for account : {}".format(account_id)) sync_campaigns(access_token, account_id) sync_campaign_performance(access_token, account_id, campaign_sync_start_date, campaign_sync_end_date) else: LOGGER.info("Not fetching campaign for account : {}".format(account_id))
def insert_allowed_account(allowed_account): config = configs.get("db_credentials") db = database.Connection(database=config.get('database'), user=config.get('user'), password=config.get('password'), host=config.get('host')) account_id = allowed_account.get('account_id') name = allowed_account.get('name', '') # Get Taboola Platform ID platform_id = getPlatformId() # check if already exist then update it else insert data = db.query( "SELECT * FROM dsp_partner_brands WHERE code = '{}' ".format( account_id)) if (data): LOGGER.info("Updating account_id : {} ".format(account_id)) statement = "UPDATE dsp_partner_brands set name = '{}', updated_at = now() WHERE code = '{}'".format( name, account_id) db.execute(statement) else: LOGGER.info("Inserting account_id : {} ".format(account_id)) statement = "INSERT INTO dsp_partner_brands (name,code,dsp_demand_side_platform_id,id,created_at,updated_at) VALUES ('{}','{}',unhex('{}'),unhex(replace(uuid(),'-','')),now(), now())".format( name, account_id, platform_id) db.execute(statement) return True
def insert_partner_campaigns(): config = configs.get("db_credentials") db = database.Connection(database=config.get('database'), user=config.get('user'), password=config.get('password'), host=config.get('host')) platform_id = getPlatformId() outbrain_platform_id = getOutbrainPlatformId() LOGGER.info("Inserting Partner Campaigns") statement = "TRUNCATE table dim_partner_campaigns" db.execute(statement) statement = "INSERT INTO dim_partner_campaigns (dsp_partner_campaign_id, dsp_partner_campaign_name, dsp_partner_brand_id, dsp_partner_brand_name, dsp_demand_side_platform_id, dsp_demand_side_platform_name) (SELECT c.id, c.NAME, b.id, b.NAME, d.id, d.NAME FROM dsp_partner_campaigns c LEFT JOIN dsp_partner_brands b ON c.dsp_partner_brand_id = b.id LEFT JOIN dsp_partner_campaign_demand_side_platforms cd ON c.id = cd.dsp_partner_campaign_id LEFT JOIN dsp_demand_side_platforms d ON cd.dsp_demand_side_platform_id = d.id WHERE cd.dsp_demand_side_platform_id = unhex('{}'))".format( platform_id) db.execute(statement) statement = "INSERT INTO dim_partner_campaigns (dsp_partner_campaign_id, dsp_partner_campaign_name, dsp_partner_brand_id, dsp_partner_brand_name, dsp_demand_side_platform_id, dsp_demand_side_platform_name) (SELECT c.id, c.NAME, b.id, b.NAME, d.id, d.NAME FROM dsp_partner_campaigns c LEFT JOIN dsp_partner_brands b ON c.dsp_partner_brand_id = b.id LEFT JOIN dsp_partner_campaign_demand_side_platforms cd ON c.id = cd.dsp_partner_campaign_id LEFT JOIN dsp_demand_side_platforms d ON cd.dsp_demand_side_platform_id = d.id WHERE cd.dsp_demand_side_platform_id = unhex('{}'))".format( outbrain_platform_id) db.execute(statement) return True
def parse_allowed_account(allowed_account): config = configs.get("db_credentials") db = database.Connection(database=config.get('database'), user=config.get('user'), password=config.get('password'), host=config.get('host')) partner_types = allowed_account.get('partner_types') if partner_types: partner_types = ",".join(partner_types) campaign_types = allowed_account.get('campaign_types') if campaign_types: campaign_types = ",".join(campaign_types) account_id = allowed_account.get('account_id') name = allowed_account.get('name', '') now = datetime.now().strftime('%Y-%m-%d %H:%M:%S') account = { 'api_id': str(allowed_account.get('api_id')), 'name': str(name), 'account_id': str(account_id), 'partner_types': str(partner_types), 'type': str(allowed_account.get('type', '')), 'campaign_types': str(campaign_types), } return account
def parse_allowed_account(allowed_account): config = configs.get("db_credentials") db = database.Connection(database=config.get('database'), user=config.get('user'), password=config.get('password'), host=config.get('host')) partner_types = allowed_account.get('partner_types') if partner_types: partner_types = ",".join(partner_types) campaign_types = allowed_account.get('campaign_types') if campaign_types: campaign_types = ",".join(campaign_types) api_id = allowed_account.get('id') # check if already exist then update it else insert data = db.query( "SELECT * FROM taboola_accounts WHERE api_id = {} ".format(api_id)) if (data): account = { 'api_id': str(api_id), 'name': str(allowed_account.get('name', '')), 'account_id': str(allowed_account.get('account_id', '')), 'partner_types': str(partner_types), 'type': str(allowed_account.get('type', '')), 'campaign_types': str(campaign_types), 'updated_at': str(datetime.now().strftime('%Y-%m-%d %H:%M:%S')), } LOGGER.info("Updating account_id : {} ".format( str(allowed_account.get('account_id', '')))) conditions = {'api_id': str(api_id)} statement = db.prepare_update_statement("taboola_accounts", account, conditions) db.execute(statement) else: account = { 'api_id': str(api_id), 'name': str(allowed_account.get('name', '')), 'account_id': str(allowed_account.get('account_id', '')), 'partner_types': str(partner_types), 'type': str(allowed_account.get('type', '')), 'campaign_types': str(campaign_types), 'created_at': str(datetime.now().strftime('%Y-%m-%d %H:%M:%S')), 'updated_at': str(datetime.now().strftime('%Y-%m-%d %H:%M:%S')), } LOGGER.info("Inserting account_id : {} ".format( str(allowed_account.get('account_id', '')))) statement = db.prepare_insert_statement("taboola_accounts", account) db.execute(statement) return account
def getDSPPartnerBrandId(code): brand_id = '' config = configs.get("db_credentials") db = database.Connection(database=config.get('database'), user=config.get('user'),password=config.get('password'),host=config.get('host')) data = db.get("SELECT hex(id) as brand_id FROM dsp_partner_brands WHERE code = '{}' " .format(code)) if (data): brand_id = data.get('brand_id') return brand_id
def getPlatformId(): platform_id = '' config = configs.get("db_credentials") db = database.Connection(database=config.get('database'), user=config.get('user'),password=config.get('password'),host=config.get('host')) data = db.get("SELECT hex(id) as platform_id FROM dsp_demand_side_platforms WHERE name = '{}' " .format(PLATFORM_NAME)) if (data): platform_id = data.get('platform_id') return platform_id
def parse_campaign(campaign): config = configs.get("db_credentials") db = database.Connection(database=config.get('database'), user=config.get('user'), password=config.get('password'), host=config.get('host')) api_id = campaign.get('id') start_date = campaign.get('start_date') end_date = campaign.get('end_date') country_targeting = campaign.get('country_targeting') if country_targeting: country_targeting = ",".join(country_targeting) platform_targeting = campaign.get('platform_targeting') if platform_targeting: platform_targeting = ",".join(platform_targeting) publisher_targeting = campaign.get('publisher_targeting') if publisher_targeting: publisher_targeting = ",".join(publisher_targeting) api_id = campaign.get('id') name = campaign.get('name', '') advertiser_id = campaign.get('advertiser_id') temp_campaign = { 'api_id': str(api_id), 'advertiser_id': str(advertiser_id), 'name': str(name), 'tracking_code': str(campaign.get('tracking_code', '')), 'cpc': str(campaign.get('cpc', '')), 'daily_cap': str(campaign.get('daily_cap', '')), 'spending_limit': str(campaign.get('spending_limit', '')), 'spending_limit_model': str(campaign.get('spending_limit_model', '')), 'country_targeting': str(country_targeting), 'platform_targeting': str(platform_targeting), 'publisher_targeting': str(publisher_targeting), 'start_date': str('9999-12-31' if start_date is None else start_date), 'end_date': str('9999-12-31' if end_date is None else end_date), 'approval_state': str(campaign.get('approval_state', '')), 'is_active': str(campaign.get('is_active', False)), 'spent': str(campaign.get('spent', '')), 'status': str(campaign.get('status', '')), } return temp_campaign
def parse_allowed_account(allowed_account): config = configs.get("db_credentials") db = database.Connection(database=config.get('database'), user=config.get('user'),password=config.get('password'),host=config.get('host')) partner_types = allowed_account.get('partner_types') if partner_types: partner_types = ",".join(partner_types) campaign_types = allowed_account.get('campaign_types') if campaign_types: campaign_types = ",".join(campaign_types) account_id = allowed_account.get('account_id') name = allowed_account.get('name', '') now = datetime.now().strftime('%Y-%m-%d %H:%M:%S') # Get Taboola Platform ID platform_id = getPlatformId() # check if already exist then update it else insert data = db.query("SELECT * FROM dsp_partner_brands WHERE code = '{}' " .format(account_id)) if (data): LOGGER.info("Updating account_id : {} ".format(account_id)) statement = "UPDATE dsp_partner_brands set name = '{}', updated_at = now() WHERE code = '{}'".format(name, account_id) db.execute(statement) else: LOGGER.info("Inserting account_id : {} ".format(account_id)) statement = "INSERT INTO dsp_partner_brands (name,code,dsp_demand_side_platform_id,id,created_at,updated_at) VALUES ('{}','{}',unhex('{}'),unhex(replace(uuid(),'-','')),now(), now())".format(name, account_id, platform_id) db.execute(statement) account = { 'api_id': str(allowed_account.get('api_id')), 'name': str(name), 'account_id': str(account_id), 'partner_types': str(partner_types), 'type': str(allowed_account.get('type', '')), 'campaign_types': str(campaign_types), } return account
def getOutbrainPlatformId(): LOGGER.info("Reading platform_id from Database") config = configs.get("db_credentials") db = database.Connection(database=config.get('database'), user=config.get('user'), password=config.get('password'), host=config.get('host')) data = db.get( "SELECT hex(id) as platform_id FROM dsp_demand_side_platforms WHERE name = '{}' " .format(PLATFORM_NAME_OUTBRAIN)) if (data): platform_id = data.get('platform_id') return platform_id
def insert_campaign(campaign): config = configs.get("db_credentials") db = database.Connection(database=config.get('database'), user=config.get('user'), password=config.get('password'), host=config.get('host')) api_id = campaign.get('api_id') name = campaign.get('name', '') advertiser_id = campaign.get('advertiser_id') # Get Partner Brand Id brand_id = getDSPPartnerBrandId(advertiser_id) # Get Taboola Platform ID platform_id = getPlatformId() # check if already exist then update it else insert data = db.query( "SELECT * FROM dsp_partner_campaigns WHERE code = '{}' ".format( api_id)) if (data): LOGGER.info("Updating Campaign for api_id : {} ".format(api_id)) statement = "UPDATE dsp_partner_campaigns set name = '{}', updated_at = now() WHERE code = '{}'".format( name, api_id) db.execute(statement) else: LOGGER.info("Inserting Campaign for api_id : {} ".format(api_id)) # Insert campaign in dsp_partner_campaigns statement = "INSERT INTO dsp_partner_campaigns (name,code,dsp_partner_brand_id,id,created_at,updated_at) VALUES ('{}','{}',unhex('{}'),unhex(replace(uuid(),'-','')),now(), now())".format( name, api_id, brand_id) db.execute(statement) campaign_id = getDSPPartnerCampaignId(api_id) # Insert campaign in dsp_partner_campaign_demand_side_platforms statement = "INSERT INTO dsp_partner_campaign_demand_side_platforms (dsp_partner_campaign_id,dsp_demand_side_platform_id) VALUES (unhex('{}'),unhex('{}'))".format( campaign_id, platform_id) db.execute(statement) return True
def parse_campaign_performance(campaign_performance): config = configs.get("db_credentials") db = database.Connection(database=config.get('database'), user=config.get('user'), password=config.get('password'), host=config.get('host')) campaign_id = str(campaign_performance.get('campaign')) impressions = campaign_performance.get('impressions', '') clicks = campaign_performance.get('clicks', '') last_click = campaign_performance.get('cpa_actions_num', '') spend = campaign_performance.get('spent', '') temp_campaign_performance = { 'campaign_id': str(campaign_id), 'impressions': str(impressions), 'ctr': str(campaign_performance.get('ctr', '')), 'cpc': str(campaign_performance.get('cpc', '')), 'cpa_actions_num': str(last_click), 'cpa': str(campaign_performance.get('cpa', '')), 'cpm': str(campaign_performance.get('cpm', '')), 'clicks': str(clicks), 'currency': str(campaign_performance.get('currency', '')), 'cpa_conversion_rate': str(campaign_performance.get('cpa_conversion_rate', '')), 'spent': str(spend), 'campaign_date': str(campaign_performance.get('date')), } return temp_campaign_performance
def parse_campaign(campaign): config = configs.get("db_credentials") db = database.Connection(database=config.get('database'), user=config.get('user'),password=config.get('password'),host=config.get('host')) api_id = campaign.get('id') start_date = campaign.get('start_date') end_date = campaign.get('end_date') country_targeting = campaign.get('country_targeting') if country_targeting: country_targeting = ",".join(country_targeting) platform_targeting = campaign.get('platform_targeting') if platform_targeting: platform_targeting = ",".join(platform_targeting) publisher_targeting = campaign.get('publisher_targeting') if publisher_targeting: publisher_targeting = ",".join(publisher_targeting) api_id = campaign.get('id') name = campaign.get('name', '') advertiser_id = campaign.get('advertiser_id') # Get Partner Brand Id brand_id = getDSPPartnerBrandId(advertiser_id) # Get Taboola Platform ID platform_id = getPlatformId() # check if already exist then update it else insert data = db.query("SELECT * FROM dsp_partner_campaigns WHERE code = '{}' " .format(api_id)) if (data): LOGGER.info("Updating Campaign for api_id : {} ".format(api_id)) statement = "UPDATE dsp_partner_campaigns set name = '{}', updated_at = now() WHERE code = '{}'".format(name, api_id) db.execute(statement) else: LOGGER.info("Inserting Campaign for api_id : {} ".format(api_id)) # Insert campaign in dsp_partner_campaigns statement = "INSERT INTO dsp_partner_campaigns (name,code,dsp_partner_brand_id,id,created_at,updated_at) VALUES ('{}','{}',unhex('{}'),unhex(replace(uuid(),'-','')),now(), now())".format(name, api_id, brand_id) db.execute(statement) campaign_id = getDSPPartnerCampaignId(api_id) # Insert campaign in dsp_partner_campaign_demand_side_platforms statement = "INSERT INTO dsp_partner_campaign_demand_side_platforms (dsp_partner_campaign_id,dsp_demand_side_platform_id) VALUES (unhex('{}'),unhex('{}'))".format(campaign_id, platform_id) db.execute(statement) temp_campaign = { 'api_id': str(api_id), 'advertiser_id': str(advertiser_id), 'name': str(name), 'tracking_code': str(campaign.get('tracking_code', '')), 'cpc': str(campaign.get('cpc', '')), 'daily_cap': str(campaign.get('daily_cap', '')), 'spending_limit': str(campaign.get('spending_limit', '')), 'spending_limit_model': str(campaign.get('spending_limit_model', '')), 'country_targeting': str(country_targeting), 'platform_targeting': str(platform_targeting), 'publisher_targeting': str(publisher_targeting), 'start_date': str('9999-12-31' if start_date is None else start_date), 'end_date': str('9999-12-31' if end_date is None else end_date), 'approval_state': str(campaign.get('approval_state', '')), 'is_active': str(campaign.get('is_active',False)), 'spent': str(campaign.get('spent', '')), 'status': str(campaign.get('status', '')), } return temp_campaign
def parse_campaign_performance(campaign_performance): config = configs.get("db_credentials") db = database.Connection(database=config.get('database'), user=config.get('user'),password=config.get('password'),host=config.get('host')) campaign_id = str(campaign_performance.get('campaign')) campaign_date = str(datetime.strptime( campaign_performance.get('date'),'%Y-%m-%d %H:%M:%S.%f').date()) campaign_timestamp = str(datetime.strptime( campaign_performance.get('date'),'%Y-%m-%d %H:%M:%S.%f').timestamp()) campaign_action_hour = str(datetime.strptime( campaign_performance.get('date'),'%Y-%m-%d %H:%M:%S.%f').time()) impressions = campaign_performance.get('impressions', '') clicks = campaign_performance.get('clicks', '') last_click = campaign_performance.get('cpa_actions_num','') spend = campaign_performance.get('spent', '') dsp_brand_id = '' dsp_campaign_id = '' dsp_campaign_data = db.get("SELECT hex(id) as campaign_id, hex(dsp_partner_brand_id) as brand_id FROM dsp_partner_campaigns WHERE code = '{}' " .format(campaign_id)) if (dsp_campaign_data): dsp_campaign_id = dsp_campaign_data.get('campaign_id') dsp_brand_id = dsp_campaign_data.get('brand_id') platform_id = getPlatformId() # check if already exist then update it else insert data = db.query("SELECT * FROM fact_platform_campaigns WHERE dsp_partner_campaign_id = unhex('{}') AND action_date = '{}'" .format(dsp_campaign_id, campaign_date)) if (data): LOGGER.info("Updating Campaign Performace for campaign_id : {} and campaign_date = {}".format(campaign_id, campaign_date)) statement = "UPDATE fact_platform_campaigns set impressions = '{}', clicks = '{}', last_click = '{}', spend = '{}' WHERE dsp_partner_campaign_id = unhex('{}') AND action_date = '{}'".format(impressions, clicks, last_click, spend,dsp_campaign_id,campaign_date) db.execute(statement) else: LOGGER.info("Inserting Campaign Performace for campaign_id : {} and campaign_date = {}".format(campaign_id, campaign_date)) statement = "INSERT INTO fact_platform_campaigns (unix_timestamp,action_date,action_hour,impressions,clicks,last_click,spend,dsp_partner_brand_id,dsp_partner_campaign_id,dsp_demand_side_platform_id) VALUES ('{}','{}','0', '{}','{}','{}','{}',unhex('{}'),unhex('{}'),unhex('{}'))".format(campaign_timestamp, campaign_date, impressions, clicks, last_click, spend, dsp_brand_id, dsp_campaign_id, platform_id) # LOGGER.info("Insert Statement : {}".format(statement)) db.execute(statement) temp_campaign_performance = { 'campaign_id': str(campaign_id), 'impressions': str(impressions), 'ctr': str(campaign_performance.get('ctr', '')), 'cpc': str(campaign_performance.get('cpc', '')), 'cpa_actions_num': str(last_click), 'cpa': str(campaign_performance.get('cpa', '')), 'cpm': str(campaign_performance.get('cpm', '')), 'clicks': str(clicks), 'currency': str(campaign_performance.get('currency', '')), 'cpa_conversion_rate': str(campaign_performance.get('cpa_conversion_rate', '')), 'spent': str(spend), 'campaign_date': str(campaign_date), 'created_at' : str(datetime.now().strftime('%Y-%m-%d %H:%M:%S')), 'updated_at' : str(datetime.now().strftime('%Y-%m-%d %H:%M:%S')), } return temp_campaign_performance
def parse_campaign_performance(campaign_performance): config = configs.get("db_credentials") db = database.Connection(database=config.get('database'), user=config.get('user'), password=config.get('password'), host=config.get('host')) campaign_id = str(campaign_performance.get('campaign')) campaign_date = str( datetime.strptime(campaign_performance.get('date'), '%Y-%m-%d %H:%M:%S.%f').date()) # check if already exist then update it else insert data = db.query( "SELECT * FROM taboola_campaign_performances WHERE campaign_id = {} AND campaign_date = '{}'" .format(campaign_id, campaign_date)) if (data): temp_campaign_performance = { 'campaign_id': str(campaign_performance.get('campaign')), 'impressions': str(campaign_performance.get('impressions', '')), 'ctr': str(campaign_performance.get('ctr', '')), 'cpc': str(campaign_performance.get('cpc', '')), 'cpa_actions_num': str(campaign_performance.get('cpa_actions_num', '')), 'cpa': str(campaign_performance.get('cpa', '')), 'cpm': str(campaign_performance.get('cpm', '')), 'clicks': str(campaign_performance.get('clicks', '')), 'currency': str(campaign_performance.get('currency', '')), 'cpa_conversion_rate': str(campaign_performance.get('cpa_conversion_rate', '')), 'spent': str(campaign_performance.get('spent', '')), 'campaign_date': str( datetime.strptime(campaign_performance.get('date'), '%Y-%m-%d %H:%M:%S.%f').date()), 'updated_at': str(datetime.now().strftime('%Y-%m-%d %H:%M:%S')), } LOGGER.info( "Updating Campaign Performace for campaign_id : {} and campaign_date = {}" .format(campaign_id, campaign_date)) conditions = {'id': str(data[0].get('id'))} statement = db.prepare_update_statement( "taboola_campaign_performances", temp_campaign_performance, conditions) db.execute(statement) else: temp_campaign_performance = { 'campaign_id': str(campaign_performance.get('campaign')), 'impressions': str(campaign_performance.get('impressions', '')), 'ctr': str(campaign_performance.get('ctr', '')), 'cpc': str(campaign_performance.get('cpc', '')), 'cpa_actions_num': str(campaign_performance.get('cpa_actions_num', '')), 'cpa': str(campaign_performance.get('cpa', '')), 'cpm': str(campaign_performance.get('cpm', '')), 'clicks': str(campaign_performance.get('clicks', '')), 'currency': str(campaign_performance.get('currency', '')), 'cpa_conversion_rate': str(campaign_performance.get('cpa_conversion_rate', '')), 'spent': str(campaign_performance.get('spent', '')), 'campaign_date': str( datetime.strptime(campaign_performance.get('date'), '%Y-%m-%d %H:%M:%S.%f').date()), 'created_at': str(datetime.now().strftime('%Y-%m-%d %H:%M:%S')), 'updated_at': str(datetime.now().strftime('%Y-%m-%d %H:%M:%S')), } LOGGER.info( "Inserting Campaign Performace for campaign_id : {} and campaign_date = {}" .format(campaign_id, campaign_date)) statement = db.prepare_insert_statement( "taboola_campaign_performances", temp_campaign_performance) db.execute(statement) return temp_campaign_performance
def parse_campaign(campaign): config = configs.get("db_credentials") db = database.Connection(database=config.get('database'), user=config.get('user'), password=config.get('password'), host=config.get('host')) api_id = campaign.get('id') start_date = campaign.get('start_date') end_date = campaign.get('end_date') country_targeting = campaign.get('country_targeting') if country_targeting: country_targeting = ",".join(country_targeting) platform_targeting = campaign.get('platform_targeting') if platform_targeting: platform_targeting = ",".join(platform_targeting) publisher_targeting = campaign.get('publisher_targeting') if publisher_targeting: publisher_targeting = ",".join(publisher_targeting) # check if already exist then update it else insert data = db.query( "SELECT * FROM taboola_campaigns WHERE api_id = {} ".format(api_id)) if (data): temp_campaign = { 'api_id': str(campaign.get('id')), 'advertiser_id': str(campaign.get('advertiser_id', '')), 'name': str(campaign.get('name', '')), 'tracking_code': str(campaign.get('tracking_code', '')), 'cpc': str(campaign.get('cpc', '')), 'daily_cap': str(campaign.get('daily_cap', '')), 'spending_limit': str(campaign.get('spending_limit', '')), 'spending_limit_model': str(campaign.get('spending_limit_model', '')), 'country_targeting': str(country_targeting), 'platform_targeting': str(platform_targeting), 'publisher_targeting': str(publisher_targeting), 'start_date': str('9999-12-31' if start_date is None else start_date), 'end_date': str('9999-12-31' if end_date is None else end_date), 'approval_state': str(campaign.get('approval_state', '')), 'is_active': str(campaign.get('is_active', False)), 'spent': str(campaign.get('spent', '')), 'status': str(campaign.get('status', '')), 'updated_at': str(datetime.now().strftime('%Y-%m-%d %H:%M:%S')), } LOGGER.info("Updating Campaign for advertiser_id : {} ".format( str(campaign.get('advertiser_id', '')))) conditions = {'api_id': str(api_id)} statement = db.prepare_update_statement("taboola_campaigns", temp_campaign, conditions) db.execute(statement) else: temp_campaign = { 'api_id': str(campaign.get('id')), 'advertiser_id': str(campaign.get('advertiser_id', '')), 'name': str(campaign.get('name', '')), 'tracking_code': str(campaign.get('tracking_code', '')), 'cpc': str(campaign.get('cpc', '')), 'daily_cap': str(campaign.get('daily_cap', '')), 'spending_limit': str(campaign.get('spending_limit', '')), 'spending_limit_model': str(campaign.get('spending_limit_model', '')), 'country_targeting': str(country_targeting), 'platform_targeting': str(platform_targeting), 'publisher_targeting': str(publisher_targeting), 'start_date': str('9999-12-31' if start_date is None else start_date), 'end_date': str('9999-12-31' if end_date is None else end_date), 'approval_state': str(campaign.get('approval_state', '')), 'is_active': str(campaign.get('is_active', False)), 'spent': str(campaign.get('spent', '')), 'status': str(campaign.get('status', '')), 'created_at': str(datetime.now().strftime('%Y-%m-%d %H:%M:%S')), 'updated_at': str(datetime.now().strftime('%Y-%m-%d %H:%M:%S')), } LOGGER.info("Inserting Campaign for advertiser_id : {} ".format( str(campaign.get('advertiser_id', '')))) statement = db.prepare_insert_statement("taboola_campaigns", temp_campaign) db.execute(statement) return temp_campaign