Beispiel #1
0
    def get_line_items(self,
                       order=DFP_QUERY_DEFAULTS['order'],
                       limit=None,
                       offset=DFP_QUERY_DEFAULTS['offset'],
                       **filter_kwargs):
        """
        Get line items 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.LineItem}
        """

        # Fetch the SUDS object and convert to a proper dictionary
        dfp_line_items = self.dfp_client.get_line_items(order=order,
                                                        limit=limit,
                                                        offset=offset,
                                                        **filter_kwargs)
        results = self._convert_response_to_dict(dfp_line_items)

        line_items = []
        for line_item in results:
            line_items.append(transform_line_item_from_dfp(line_item))
        return line_items
Beispiel #2
0
    def get_line_items(self,
                       order=DFP_QUERY_DEFAULTS['order'],
                       limit=None,
                       offset=DFP_QUERY_DEFAULTS['offset'],
                       **filter_kwargs):
        """
        Get line items 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.LineItem}
        """

        # Fetch the SUDS object and convert to a proper dictionary
        dfp_line_items = self.dfp_client.get_line_items(
            order=order,
            limit=limit,
            offset=offset,
            **filter_kwargs
        )
        results = self._convert_response_to_dict(dfp_line_items)

        line_items = []
        for line_item in results:
            line_items.append(
                transform_line_item_from_dfp(line_item)
            )
        return line_items
Beispiel #3
0
    def get_line_item(self, line_item_id):
        """
        Return a line item object given an id

        @param line_item_id: str, id of the LineItem to return
        @return: parselmouth.delivery.LineItem
        """
        dfp_line_item = self.dfp_client.get_line_item(line_item_id)
        results = self._convert_response_to_dict(dfp_line_item)

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

        return transform_line_item_from_dfp(results[0])
Beispiel #4
0
    def get_line_item(self, line_item_id):
        """
        Return a line item object given an id

        @param line_item_id: str, id of the LineItem to return
        @return: parselmouth.delivery.LineItem
        """
        dfp_line_item = self.dfp_client.get_line_item(line_item_id)
        results = self._convert_response_to_dict(dfp_line_item)

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

        return transform_line_item_from_dfp(results[0])
    def test_line_item_utils(self):
        dfp_line_item = {
            "budget": {"currencyCode": "USD", "microAmount": "0"},
            "costPerUnit": {"currencyCode": "USD", "microAmount": "0"},
            "costType": "CPM",
            "creativePlaceholders": [
                {
                    "creativeSizeType": "PIXEL",
                    "expectedCreativeCount": "1",
                    "size": {"height": "768", "isAspectRatio": False, "width": "1024"},
                }
            ],
            "deliveryRateType": "FRONTLOADED",
            "endDateTime": {
                "date": {"day": 31, "month": 5, "year": 2014},
                "hour": 23,
                "minute": 59,
                "second": 0,
                "timeZoneID": "America/New_York",
            },
            "id": "line_item_id",
            "lastModifiedByApp": None,
            "lastModifiedDateTime": {
                "date": {"day": 23, "month": 4, "year": 2014},
                "hour": 15,
                "minute": 50,
                "second": 0,
                "timeZoneID": "America/New_York",
            },
            "lineItemType": "STANDARD",
            "name": "line_item_name",
            "orderId": "campaign_id",
            "orderName": "campaign_name",
            "primaryGoal": {"goalType": "LIFETIME", "unitType": "IMPRESSIONS", "units": u"1000000"},
            "startDateTime": {
                "date": {"day": 23, "month": 4, "year": 2014},
                "hour": 15,
                "minute": 50,
                "second": 0,
                "timeZoneID": "America/New_York",
            },
            "stats": {
                "clicksDelivered": 0,
                "impressionsDelivered": 0,
                "videoCompletionsDelivered": 0,
                "videoStartsDelivered": 0,
            },
            "targetPlatform": "ANY",
            "targeting": {
                "inventoryTargeting": {"targetedAdUnits": [{"adUnitId": "adunit", "includeDescendants": True}]}
            },
            "valueCostPerUnit": {"currencyCode": "USD", "microAmount": "0"},
            "status": "DRAFT",
        }

        # Check transform_line_item_to_dfp
        self.assertDictEqual(dfp_line_item, transform_line_item_to_dfp(TEST_LINE_ITEM))

        # Check transform_line_item_from_dfp
        self.assertEqual(TEST_LINE_ITEM, transform_line_item_from_dfp(dfp_line_item))

        # Check inversion of dfp line_item
        self.assertDictEqual(dfp_line_item, transform_line_item_to_dfp(transform_line_item_from_dfp(dfp_line_item)))

        # Check inversion of native line_item
        self.assertEqual(TEST_LINE_ITEM, transform_line_item_from_dfp(transform_line_item_to_dfp(TEST_LINE_ITEM)))
    def test_line_item_utils(self):
        dfp_line_item = {
            'budget': {
                'currencyCode': 'USD',
                'microAmount': '0',
            },
            'costPerUnit': {
                'currencyCode': 'USD',
                'microAmount': '0',
            },
            'costType':
            'CPM',
            'creativePlaceholders': [{
                'creativeSizeType': 'PIXEL',
                'expectedCreativeCount': '1',
                'size': {
                    'height': '768',
                    'isAspectRatio': False,
                    'width': '1024',
                },
            }],
            'deliveryRateType':
            'FRONTLOADED',
            'endDateTime': {
                'date': {
                    'day': 31,
                    'month': 5,
                    'year': 2014,
                },
                'hour': 23,
                'minute': 59,
                'second': 0,
                'timeZoneID': 'America/New_York',
            },
            'id':
            'line_item_id',
            'lastModifiedByApp':
            None,
            'lastModifiedDateTime': {
                'date': {
                    'day': 23,
                    'month': 4,
                    'year': 2014,
                },
                'hour': 15,
                'minute': 50,
                'second': 0,
                'timeZoneID': 'America/New_York',
            },
            'lineItemType':
            'STANDARD',
            'name':
            'line_item_name',
            'orderId':
            'campaign_id',
            'orderName':
            'campaign_name',
            'primaryGoal': {
                'goalType': 'LIFETIME',
                'unitType': 'IMPRESSIONS',
                'units': u'1000000',
            },
            'startDateTime': {
                'date': {
                    'day': 23,
                    'month': 4,
                    'year': 2014,
                },
                'hour': 15,
                'minute': 50,
                'second': 0,
                'timeZoneID': 'America/New_York',
            },
            'stats': {
                'clicksDelivered': 0,
                'impressionsDelivered': 0,
                'videoCompletionsDelivered': 0,
                'videoStartsDelivered': 0,
            },
            'targetPlatform':
            'ANY',
            'targeting': {
                'inventoryTargeting': {
                    'targetedAdUnits': [{
                        'adUnitId': 'adunit',
                        'includeDescendants': True,
                    }],
                },
            },
            'valueCostPerUnit': {
                'currencyCode': 'USD',
                'microAmount': '0',
            },
            'status':
            'DRAFT',
        }

        # Check transform_line_item_to_dfp
        self.assertDictEqual(
            dfp_line_item,
            transform_line_item_to_dfp(TEST_LINE_ITEM),
        )

        # Check transform_line_item_from_dfp
        self.assertEqual(
            TEST_LINE_ITEM,
            transform_line_item_from_dfp(dfp_line_item),
        )

        # Check inversion of dfp line_item
        self.assertDictEqual(
            dfp_line_item,
            transform_line_item_to_dfp(
                transform_line_item_from_dfp(dfp_line_item)),
        )

        # Check inversion of native line_item
        self.assertEqual(
            TEST_LINE_ITEM,
            transform_line_item_from_dfp(
                transform_line_item_to_dfp(TEST_LINE_ITEM)),
        )