def testGetByAdvertiser(self): # Create an advertiser first. adv = Advertiser(CampaignTest.conn) adv['AdvertiserName'] = 'test' adv['AttributionClickLookbackWindowInSeconds'] = 3600 adv['AttributionImpressionLookbackWindowInSeconds'] = 3600 adv['ClickDedupWindowInSeconds'] = 7 adv['ConversionDedupWindowInSeconds'] = 60 adv['DefaultRightMediaOfferTypeId'] = 1 # Adult adv['IndustryCategoryId'] = 54 # Entertainment adv['PartnerId'] = '73qiy5s' adv.create() campaign = Campaign(CampaignTest.conn) campaign['AdvertiserId'] = adv.get('AdvertiserId') campaign['CampaignName'] = "test campaign" campaign['Budget'] = {'Amount': '10000.00', 'CurrencyCode': 'USD'} campaign['StartDate'] = '2015-02-01' campaign['CampaignConversionReportingColumns'] = [] result = campaign.create() assert campaign.get('CampaignId') is not None loader = Campaign(CampaignTest.conn) campaign = loader.find(campaign.get('CampaignId')) assert campaign.get('CampaignName') == 'test campaign' campaigns = campaign.get_by_advertiser(adv.get('AdvertiserId')) for test_campaign in campaigns: assert test_campaign.get('CampaignId') == campaign.get('CampaignId') campaigns = campaign.get_by_name(test_campaign.get('AdvertiserId'), 'test campaign') for test_campaign in campaigns: assert test_campaign.get('CampaignName') == 'test campaign'
def set_domains(self, domains): # get the campaign so we can get the advertiserId loader = Campaign(Base.connection) campaign = loader.find(self['CampaignId']) # get the sitelist loader = SiteList(Base.connection) sitelist = loader.find_by_name(campaign['AdvertiserId'], self['AdGroupName']) if sitelist == None: sitelist = SiteList(Base.connection) sitelist['SiteListName'] = self['AdGroupName'] sitelist['AdvertiserId'] = campaign['AdvertiserId'] sitelist.set_domains(domains) if sitelist.getId() == 0 or sitelist.getId() is None: sitelist.create() else: sitelist.save() if 'RTBAttributes' not in self: self['RTBAttributes'] = {} self['RTBAttributes']['SiteTargeting'] = { 'SiteListIds': [sitelist.getId()], 'SiteListFallThroughAdjustment': 0 }
def set_domains(self, domains): print "start set_domains" # get the campaign so we can get the advertiserId loader = Campaign(Base.connection) campaign = loader.find(self['CampaignId']) # get the sitelist loader = SiteList(Base.connection) sitelist = loader.find_by_name(campaign['AdvertiserId'], self['AdGroupName']) if sitelist == None: sitelist = SiteList(Base.connection) sitelist['SiteListName'] = self['AdGroupName'] sitelist['AdvertiserId'] = campaign['AdvertiserId'] sitelist.set_domains(domains) if sitelist.getId() == 0 or sitelist.getId() is None: sitelist.create() else: sitelist.save() if 'RTBAttributes' not in self: self['RTBAttributes'] = {} # sitelist.getId() always exists so set as default list if 'SiteTargeting' in self['RTBAttributes']: # If Ad Group as a current list, use it and append the new ID. if 'SiteListIds' in self['RTBAttributes']['SiteTargeting']: currentList = self['RTBAttributes']['SiteTargeting'][ 'SiteListIds'] # Weird error if duplicate IDs exist """ Exception: Bad response code {"Message":"The request failed validation. Please check your request and try again.","ErrorDetails":[{"Property":"AdGroup.RTBAttributes.SiteTargeting.SiteListIds","Reasons":["The following Site Lists cannot be used for this operation because they are not accessible to Advertiser '9ut3ufp': ."]}]} """ if sitelist.getId() not in currentList: currentList.append(sitelist.getId()) else: currentList = [sitelist.getId()] if len(domains) == 0 and sitelist.getId() in currentList: currentList.remove(sitelist.getId()) if len(currentList) == 0: print "no current list" self['RTBAttributes']['SiteTargeting'] = { 'SiteListIds': [], 'SiteListFallThroughAdjustment': 1 } else: self['RTBAttributes']['SiteTargeting'] = { 'SiteListIds': currentList, 'SiteListFallThroughAdjustment': 0 }
def testCreate(self): # Create an advertiser first. adv = Advertiser(CampaignTest.conn) adv['AdvertiserName'] = 'test' adv['AttributionClickLookbackWindowInSeconds'] = 3600 adv['AttributionImpressionLookbackWindowInSeconds'] = 3600 adv['ClickDedupWindowInSeconds'] = 7 adv['ConversionDedupWindowInSeconds'] = 60 adv['DefaultRightMediaOfferTypeId'] = 1 # Adult adv['IndustryCategoryId'] = 54 # Entertainment adv['PartnerId'] = '73qiy5s' adv.create() campaign = Campaign(CampaignTest.conn) campaign['AdvertiserId'] = adv.get('AdvertiserId') campaign['CampaignName'] = "test campaign" campaign['Budget'] = {'Amount': '10000.00', 'CurrencyCode': 'USD'} campaign['StartDate'] = '2015-02-01' campaign['CampaignConversionReportingColumns'] = [] result = campaign.create() assert campaign.get('CampaignId') is not None loader = Campaign(CampaignTest.conn) campaign = loader.find(campaign.get('CampaignId')) assert campaign.get('CampaignName') == 'test campaign'
def testGetByAdvertiser(self): campaign = Campaign(CampaignTest.conn) campaigns = campaign.get_by_advertiser(self.adv_id) campaigns = json.loads(campaigns).get("data").get("Result") for test_campaign in campaigns: assert test_campaign.get('CampaignId') is not None campaign_name = 'Test SMP Api Campaign' campaigns = campaign.get_by_name(test_campaign.get('AdvertiserId'), campaign_name) campaigns = json.loads(campaigns).get("data").get("Result") for test_campaign in campaigns: assert test_campaign.get('CampaignName') == campaign_name
def set_domains(self, domains, sitelist_id=None): # get the campaign so we can get the advertiserId loader = Campaign(Base.connection) campaign = json.loads(loader.find(self.data['CampaignId'])) # get the sitelist loader = SiteList(Base.connection) if sitelist_id is not None: sitelist = json.loads(loader.find(sitelist_id)) else: sitelist = json.loads(loader.find_by_name(campaign.get('data').get('AdvertiserId'), self.data['AdGroupName'])) if sitelist.get('data').get('ResultCount') == 0: sitelist = SiteList(Base.connection) sitelist['SiteListName'] = self.data['AdGroupName'] sitelist['AdvertiserId'] = campaign.get('data').get('AdvertiserId') sitelist.set_domains(domains) response = json.loads(sitelist.create()) else: try: sitelist_data = sitelist.get('data').get('Result')[0] except: sitelist_data = sitelist.get('data') sitelist = SiteList(Base.connection, sitelist_data) sitelist.set_domains(domains) sitelist['SiteListId'] = sitelist_data.get('SiteListId') sitelist['SiteListName'] = self.data['AdGroupName'][:255] response = json.loads(sitelist.save(sitelist)) if 'RTBAttributes' not in self: self['RTBAttributes'] = {} # sitelist.getId() always exists so set as default list if 'SiteTargeting' in self.data['RTBAttributes']: # If Ad Group as a current list, use it and append the new ID. if 'SiteListIds' in self.data['RTBAttributes']['SiteTargeting']: currentList = self.data['RTBAttributes']['SiteTargeting']['SiteListIds'] if sitelist.getId() not in currentList: currentList.append(sitelist.getId()) else: currentList = [sitelist.getId()] #currentList = [response.get('data').get('SiteListId')] if len(domains) == 0 and sitelist.getId() in currentList: currentList.remove(sitelist.getId()) #currentList.remove(response.get('data').get('SiteListId')) if len(currentList) == 0: self['RTBAttributes']['SiteTargeting'] = { 'SiteListIds': [], 'SiteListFallThroughAdjustment': 1 } else: self['RTBAttributes']['SiteTargeting'] = { 'SiteListIds': currentList, 'SiteListFallThroughAdjustment': 0 } return response
def testGetByCampaign(self): # Create an advertiser first. adv = Advertiser(AdGroupTest.conn) adv['AdvertiserName'] = 'ad group adv test' adv['AttributionClickLookbackWindowInSeconds'] = 3600 adv['AttributionImpressionLookbackWindowInSeconds'] = 3600 adv['ClickDedupWindowInSeconds'] = 7 adv['ConversionDedupWindowInSeconds'] = 60 adv['DefaultRightMediaOfferTypeId'] = 1 # Adult adv['IndustryCategoryId'] = 54 # Entertainment adv['PartnerId'] = '73qiy5s' adv.create() # Create a campaign first. campaign = Campaign(AdGroupTest.conn) campaign['AdvertiserId'] = adv.get('AdvertiserId') campaign['CampaignName'] = "test campaign for ad group" campaign['Budget'] = {'Amount': '10000.00', 'CurrencyCode': 'USD'} campaign['StartDate'] = '2015-02-01' campaign['CampaignConversionReportingColumns'] = [] result = campaign.create() # Create an advertiser first. contract = Contract(AdGroupTest.conn) contract['Name'] = 'Contract Test' contract['OwnerPartnerId'] = '73qiy5s' contract["StartDateUtc"] = "2015-04-30T21:21:19.7668268" code = int(time.time()) deals = [{ "SupplyVendorId": 7, # AppNexus "SupplyVendorDealId": str(code), # AppNexus "FloorPriceCPM": { "CurrencyCode": "USD", "Amount": 1.0 } }] contract['Deals'] = deals contract.create() ad_group = AdGroup(AdGroupTest.conn) ad_group['CampaignId'] = campaign.get('CampaignId') ad_group['AdGroupName'] = 'ad group test' ad_group['IndustryCategoryId'] = 54 attributes = { 'BudgetSettings': { 'Budget': {'Amount': 1000.00, 'CurrencyCode': 'USD'}, 'DailyBudget': {'Amount': 100.00, 'CurrencyCode': 'USD'}, 'PacingEnabled': True }, 'BaseBidCPM': {'Amount': 1.00, 'CurrencyCode': 'USD'}, 'MaxBidCPM': {'Amount': 2.00, 'CurrencyCode': 'USD'}, 'ContractTargeting': { 'InventoryTargetingType': 'BothMarkets', 'ContractIds': [contract.get('ContractId')] } } ad_group['RTBAttributes'] = attributes ad_group.set_domains(["espn.com", "cnn.com"]) ad_group.create() ad_groups = ad_group.get_by_campaign(campaign.get('CampaignId')) for test_group in ad_groups: assert test_group.get('id') == ad_group.get('id') ad_groups = ad_group.get_by_name(campaign.get('CampaignId'), 'ad group test') for test_group in ad_groups: assert test_group.get('AdGroupName') == 'ad group test'
def testCreate(self): # Create an advertiser first. adv = Advertiser(AdGroupTest.conn) adv['AdvertiserName'] = 'ad group adv test eman' adv['AttributionClickLookbackWindowInSeconds'] = 3600 adv['AttributionImpressionLookbackWindowInSeconds'] = 3600 adv['ClickDedupWindowInSeconds'] = 7 adv['ConversionDedupWindowInSeconds'] = 60 adv['DefaultRightMediaOfferTypeId'] = 1 # Adult adv['IndustryCategoryId'] = 54 # Entertainment adv['PartnerId'] = '73qiy5s' adv.create() # Create a campaign first. campaign = Campaign(AdGroupTest.conn) campaign['AdvertiserId'] = adv.get('AdvertiserId') campaign['CampaignName'] = "test campaign for ad group" campaign['Budget'] = {'Amount': '10000.00', 'CurrencyCode': 'USD'} campaign['StartDate'] = '2015-02-01' campaign['CampaignConversionReportingColumns'] = [] result = campaign.create() # Create an advertiser first. contract = Contract(AdGroupTest.conn) contract['Name'] = 'Contract Test' contract['OwnerPartnerId'] = '73qiy5s' contract["StartDateUtc"] = "2015-04-30T21:21:19.7668268" code = int(time.time()) deals = [{ "SupplyVendorId": 7, # AppNexus "SupplyVendorDealId": str(code), # AppNexus "FloorPriceCPM": { "CurrencyCode": "USD", "Amount": 1.0 } }] contract['Deals'] = deals contract.create() ad_group = AdGroup(AdGroupTest.conn) ad_group['CampaignId'] = campaign.get('CampaignId') ad_group['AdGroupName'] = 'ad group test' ad_group['IndustryCategoryId'] = 54 ad_group attributes = { 'BudgetSettings': { 'Budget': { 'Amount': 1000.00, 'CurrencyCode': 'USD' }, 'DailyBudget': { 'Amount': 100.00, 'CurrencyCode': 'USD' }, 'PacingEnabled': True }, 'BaseBidCPM': { 'Amount': 1.00, 'CurrencyCode': 'USD' }, 'MaxBidCPM': { 'Amount': 2.00, 'CurrencyCode': 'USD' }, } ad_group['RTBAttributes'] = attributes ad_group.set_deals([contract.get('ContractId')]) ad_group.create() assert ad_group.get('AdGroupId') is not None loader = AdGroup(AdGroupTest.conn) reloaded = loader.find(ad_group.get('AdGroupId')) assert ad_group.get('AdGroupId') == reloaded.get('AdGroupId') # test save reloaded.save()