Пример #1
0
    def get_campaigns(self,
                      order=DFP_QUERY_DEFAULTS['order'],
                      limit=None,
                      offset=DFP_QUERY_DEFAULTS['offset'],
                      **filter_kwargs):
        """
        Get campaigns on optional filters

        @param order: str, PQL key to sort on (default=ID)
        @param limit: int, number of PQL results to return
        @param offset: int, page in a stream of PQL results to return
        @param filter_kwargs: dict, keyword arguments on which to filter
            PQL results
        @return: L{parselmouth.delivery.Campaign}

        Example:
            * Get an order by id: `get_campaigns(id=ORDER_ID)`
            * Get orders by advertiser id:
                `get_campaigns(advertiserId=ADVERTISER_ID, limit=10)`
        """
        # Fetch the SUDS object and convert to a proper dictionary
        dfp_orders = self.dfp_client.get_orders(order=order,
                                                limit=limit,
                                                offset=offset,
                                                **filter_kwargs)
        results = self._convert_response_to_dict(dfp_orders)

        campaigns = []
        for order in results:
            campaigns.append(transform_campaign_from_dfp(order))
        return campaigns
Пример #2
0
    def get_campaigns(self,
                      order=DFP_QUERY_DEFAULTS['order'],
                      limit=None,
                      offset=DFP_QUERY_DEFAULTS['offset'],
                      **filter_kwargs):
        """
        Get campaigns on optional filters

        @param order: str, PQL key to sort on (default=ID)
        @param limit: int, number of PQL results to return
        @param offset: int, page in a stream of PQL results to return
        @param filter_kwargs: dict, keyword arguments on which to filter
            PQL results
        @return: L{parselmouth.delivery.Campaign}

        Example:
            * Get an order by id: `get_campaigns(id=ORDER_ID)`
            * Get orders by advertiser id:
                `get_campaigns(advertiserId=ADVERTISER_ID, limit=10)`
        """
        # Fetch the SUDS object and convert to a proper dictionary
        dfp_orders = self.dfp_client.get_orders(
            order=order,
            limit=limit,
            offset=offset,
            **filter_kwargs
        )
        results = self._convert_response_to_dict(dfp_orders)

        campaigns = []
        for order in results:
            campaigns.append(
                transform_campaign_from_dfp(order)
            )
        return campaigns
Пример #3
0
    def get_campaign(self, campaign_id):
        """
        Return a campaign object given an id

        @param campaign_id: str, id of the campaign to return
        @return: parselmouth.delivery.Campaign
        """
        # Fetch the SUDS object and convert to a proper dictionary
        dfp_order = self.dfp_client.get_order(campaign_id)
        results = self._convert_response_to_dict(dfp_order)

        if len(results) == 0:
            raise ParselmouthException(
                "No results for campaign with id: {0}".format(campaign_id))
        elif len(results) > 1:
            raise ParselmouthException(
                "More than one result for campaign with id: {0}".format(
                    campaign_id))

        return transform_campaign_from_dfp(results[0])
Пример #4
0
    def get_campaign(self, campaign_id):
        """
        Return a campaign object given an id

        @param campaign_id: str, id of the campaign to return
        @return: parselmouth.delivery.Campaign
        """
        # Fetch the SUDS object and convert to a proper dictionary
        dfp_order = self.dfp_client.get_order(campaign_id)
        results = self._convert_response_to_dict(dfp_order)

        if len(results) == 0:
            raise ParselmouthException(
                "No results for campaign with id: {0}".format(campaign_id)
            )
        elif len(results) > 1:
            raise ParselmouthException(
                "More than one result for campaign with id: {0}".format(
                    campaign_id
                )
            )

        return transform_campaign_from_dfp(results[0])
Пример #5
0
    def test_campaign_utils(self):
        campaign = Campaign(
            advertiser_id="ad_id",
            creator_id="cr_id",
            currency_code="USD",
            end=datetime(2015, 8, 14, 23, 59, tzinfo=timezone("America/New_York")),
            external_campaign_id="0",
            id="campaign_id",
            name="campaign_name",
            start=datetime(2015, 3, 3, 15, 57, tzinfo=timezone("America/New_York")),
            status="DRAFT",
            stats=Stats(impressions=0, clicks=0),
            last_modified=datetime(2015, 3, 3, 15, 57, tzinfo=timezone("America/New_York")),
            total_budget=Cost(budget_micro_amount=10000.0, budget_currency_code="USD"),
        )

        dfp_campaign = {
            "advertiserId": "ad_id",
            "creatorId": "cr_id",
            "currencyCode": "USD",
            "endDateTime": {
                "date": {"day": 14, "month": 8, "year": 2015},
                "hour": 23,
                "minute": 59,
                "second": 0,
                "timeZoneID": "America/New_York",
            },
            "id": "campaign_id",
            "externalOrderId": "0",
            "lastModifiedByApp": None,
            "lastModifiedDateTime": {
                "date": {"day": 3, "month": 3, "year": 2015},
                "hour": 15,
                "minute": 57,
                "second": 0,
                "timeZoneID": "America/New_York",
            },
            "name": "campaign_name",
            "startDateTime": {
                "date": {"day": 3, "month": 3, "year": 2015},
                "hour": 15,
                "minute": 57,
                "second": 0,
                "timeZoneID": "America/New_York",
            },
            "status": "DRAFT",
            "totalBudget": {"currencyCode": "USD", "microAmount": 10000.0},
            "totalClicksDelivered": 0,
            "totalImpressionsDelivered": 0,
        }

        # Check transform_campaign_to_dfp
        self.assertDictEqual(dfp_campaign, transform_campaign_to_dfp(campaign))

        # Check transform_campaign_from_dfp
        self.assertEqual(campaign, transform_campaign_from_dfp(dfp_campaign))

        # Check inversion of dfp campaign
        self.assertDictEqual(dfp_campaign, transform_campaign_to_dfp(transform_campaign_from_dfp(dfp_campaign)))

        # Check inversion of native campaign
        self.assertEqual(campaign, transform_campaign_from_dfp(transform_campaign_to_dfp(campaign)))
    def test_campaign_utils(self):
        campaign = Campaign(
            advertiser_id='ad_id',
            creator_id='cr_id',
            currency_code='USD',
            end=datetime(2015,
                         8,
                         14,
                         23,
                         59,
                         tzinfo=timezone('America/New_York')),
            external_campaign_id='0',
            id='campaign_id',
            name='campaign_name',
            start=datetime(2015,
                           3,
                           3,
                           15,
                           57,
                           tzinfo=timezone('America/New_York')),
            status='DRAFT',
            stats=Stats(
                impressions=0,
                clicks=0,
            ),
            last_modified=datetime(2015,
                                   3,
                                   3,
                                   15,
                                   57,
                                   tzinfo=timezone('America/New_York')),
            total_budget=Cost(
                budget_micro_amount=10000.0,
                budget_currency_code='USD',
            ),
        )

        dfp_campaign = {
            'advertiserId': 'ad_id',
            'creatorId': 'cr_id',
            'currencyCode': 'USD',
            'endDateTime': {
                'date': {
                    'day': 14,
                    'month': 8,
                    'year': 2015,
                },
                'hour': 23,
                'minute': 59,
                'second': 0,
                'timeZoneID': 'America/New_York',
            },
            'id': 'campaign_id',
            'externalOrderId': '0',
            'lastModifiedByApp': None,
            'lastModifiedDateTime': {
                'date': {
                    'day': 3,
                    'month': 3,
                    'year': 2015,
                },
                'hour': 15,
                'minute': 57,
                'second': 0,
                'timeZoneID': 'America/New_York',
            },
            'name': 'campaign_name',
            'startDateTime': {
                'date': {
                    'day': 3,
                    'month': 3,
                    'year': 2015,
                },
                'hour': 15,
                'minute': 57,
                'second': 0,
                'timeZoneID': 'America/New_York',
            },
            'status': 'DRAFT',
            'totalBudget': {
                'currencyCode': 'USD',
                'microAmount': 10000.0,
            },
            'totalClicksDelivered': 0,
            'totalImpressionsDelivered': 0
        }

        # Check transform_campaign_to_dfp
        self.assertDictEqual(
            dfp_campaign,
            transform_campaign_to_dfp(campaign),
        )

        # Check transform_campaign_from_dfp
        self.assertEqual(
            campaign,
            transform_campaign_from_dfp(dfp_campaign),
        )

        # Check inversion of dfp campaign
        self.assertDictEqual(
            dfp_campaign,
            transform_campaign_to_dfp(
                transform_campaign_from_dfp(dfp_campaign)),
        )

        # Check inversion of native campaign
        self.assertEqual(
            campaign,
            transform_campaign_from_dfp(transform_campaign_to_dfp(campaign)),
        )