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
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
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 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)), )