示例#1
0
    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'
示例#2
0
文件: ad_group.py 项目: 3neat/ttd-api
    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
            }
示例#3
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
            }
示例#4
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'
示例#5
0
    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
示例#6
0
    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
示例#7
0
    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'
示例#8
0
    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()