def _sell_type_reverse_lookup(line_item): """ Get the dfp name for the given sell type @param line_item: LineItem @return: str """ for dfp_type, native_type in SELL_TYPE_MAP.items(): if line_item.type == native_type: return dfp_type return (line_item.type or '').upper()
def _sell_type_reverse_lookup(line_item): """ Get the dfp name for the given sell type @param line_item: LineItem @return: str """ for dfp_type, native_type in SELL_TYPE_MAP.items(): if line_item.type == native_type: return dfp_type return (line_item.type or "").upper()
def transform_line_item_from_dfp(line_item): """ Convert dictionary-representation for a SUDS line item object into a Parselmouth representation of a Line Item @param order: dict, dictionary-representation of a DFP SUDS response for a single line item @return: parselmouth.delivery.LineItem """ # Sanitize and cast inputs start_datetime, end_datetime, last_modified_datetime = \ _get_dfp_dates_from_object(line_item) _delivery = line_item.get('deliveryIndicator', {}) _stats = line_item.get('stats', {}) stats = Stats(impressions=_stats.get('impressionsDelivered', 0), clicks=_stats.get('clicksDelivered', 0), video_starts=_stats.get('videoStartsDelivered', 0), video_completions=_stats.get('videoCompletionsDelivered', 0)) delivery_meta = DeliveryMeta( stats=stats, delivery_rate_type=line_item.get('deliveryRateType'), actual_delivery_percent=_delivery.get('actualDeliveryPercentage', 0), expected_delivery_percent=_delivery.get('expectedDeliveryPercentage', 0)) budget = Cost(budget_micro_amount=line_item['budget']['microAmount'], budget_currency_code=line_item['budget']['currencyCode']) cost_per_unit = Cost( budget_micro_amount=line_item['costPerUnit']['microAmount'], budget_currency_code=line_item['costPerUnit']['currencyCode']) value_cost_per_unit = Cost( budget_micro_amount=line_item['valueCostPerUnit']['microAmount'], budget_currency_code=line_item['valueCostPerUnit']['currencyCode']) primary_goal = Goal(goal_type=line_item['primaryGoal']['goalType'], unit_type=line_item['primaryGoal']['unitType'], units=int(line_item['primaryGoal']['units'])) targeting = transform_targeting_data_from_dfp(line_item['targeting'], ) return LineItem( budget=budget, cost_per_unit=cost_per_unit, cost_type=line_item['costType'], delivery=delivery_meta, end=end_datetime, id=line_item['id'], last_modified=last_modified_datetime, last_modified_by=line_item['lastModifiedByApp'], type=SELL_TYPE_MAP.get(line_item['lineItemType']), name=line_item['name'], campaign_id=line_item['orderId'], campaign_name=line_item['orderName'], primary_goal=primary_goal, start=start_datetime, status=line_item['status'], targeting=targeting, value_cost_per_unit=value_cost_per_unit, creative_placeholder=line_item.get('creativePlaceholders'), target_platform=line_item.get('targetPlatform'), )
def transform_line_item_from_dfp(line_item): """ Convert dictionary-representation for a SUDS line item object into a Parselmouth representation of a Line Item @param order: dict, dictionary-representation of a DFP SUDS response for a single line item @return: parselmouth.delivery.LineItem """ # Sanitize and cast inputs start_datetime, end_datetime, last_modified_datetime = _get_dfp_dates_from_object(line_item) _delivery = line_item.get("deliveryIndicator", {}) _stats = line_item.get("stats", {}) stats = Stats( impressions=_stats.get("impressionsDelivered", 0), clicks=_stats.get("clicksDelivered", 0), video_starts=_stats.get("videoStartsDelivered", 0), video_completions=_stats.get("videoCompletionsDelivered", 0), ) delivery_meta = DeliveryMeta( stats=stats, delivery_rate_type=line_item.get("deliveryRateType"), actual_delivery_percent=_delivery.get("actualDeliveryPercentage", 0), expected_delivery_percent=_delivery.get("expectedDeliveryPercentage", 0), ) budget = Cost( budget_micro_amount=line_item["budget"]["microAmount"], budget_currency_code=line_item["budget"]["currencyCode"] ) cost_per_unit = Cost( budget_micro_amount=line_item["costPerUnit"]["microAmount"], budget_currency_code=line_item["costPerUnit"]["currencyCode"], ) value_cost_per_unit = Cost( budget_micro_amount=line_item["valueCostPerUnit"]["microAmount"], budget_currency_code=line_item["valueCostPerUnit"]["currencyCode"], ) primary_goal = Goal( goal_type=line_item["primaryGoal"]["goalType"], unit_type=line_item["primaryGoal"]["unitType"], units=int(line_item["primaryGoal"]["units"]), ) targeting = transform_targeting_data_from_dfp(line_item["targeting"]) return LineItem( budget=budget, cost_per_unit=cost_per_unit, cost_type=line_item["costType"], delivery=delivery_meta, end=end_datetime, id=line_item["id"], last_modified=last_modified_datetime, last_modified_by=line_item["lastModifiedByApp"], type=SELL_TYPE_MAP.get(line_item["lineItemType"]), name=line_item["name"], campaign_id=line_item["orderId"], campaign_name=line_item["orderName"], primary_goal=primary_goal, start=start_datetime, status=line_item["status"], targeting=targeting, value_cost_per_unit=value_cost_per_unit, creative_placeholder=line_item.get("creativePlaceholders"), target_platform=line_item.get("targetPlatform"), )
def transform_line_item_from_dfp(line_item): """ Convert dictionary-representation for a SUDS line item object into a Parselmouth representation of a Line Item @param order: dict, dictionary-representation of a DFP SUDS response for a single line item @return: parselmouth.delivery.LineItem """ # Sanitize and cast inputs start_datetime, end_datetime, last_modified_datetime = \ _get_dfp_dates_from_object(line_item) _delivery = line_item.get('deliveryIndicator', {}) _stats = line_item.get('stats', {}) stats = Stats( impressions=_stats.get('impressionsDelivered', 0), clicks=_stats.get('clicksDelivered', 0), video_starts=_stats.get('videoStartsDelivered', 0), video_completions=_stats.get('videoCompletionsDelivered', 0) ) delivery_meta = DeliveryMeta( stats=stats, delivery_rate_type=line_item.get('deliveryRateType'), actual_delivery_percent=_delivery.get('actualDeliveryPercentage', 0), expected_delivery_percent=_delivery.get('expectedDeliveryPercentage', 0) ) budget = Cost( budget_micro_amount=line_item['budget']['microAmount'], budget_currency_code=line_item['budget']['currencyCode'] ) cost_per_unit = Cost( budget_micro_amount=line_item['costPerUnit']['microAmount'], budget_currency_code=line_item['costPerUnit']['currencyCode'] ) value_cost_per_unit = Cost( budget_micro_amount=line_item['valueCostPerUnit']['microAmount'], budget_currency_code=line_item['valueCostPerUnit']['currencyCode'] ) primary_goal = Goal( goal_type=line_item['primaryGoal']['goalType'], unit_type=line_item['primaryGoal']['unitType'], units=int(line_item['primaryGoal']['units']) ) targeting = transform_targeting_data_from_dfp( line_item['targeting'], ) return LineItem( budget=budget, cost_per_unit=cost_per_unit, cost_type=line_item['costType'], delivery=delivery_meta, end=end_datetime, id=line_item['id'], last_modified=last_modified_datetime, last_modified_by=line_item['lastModifiedByApp'], type=SELL_TYPE_MAP.get(line_item['lineItemType']), name=line_item['name'], campaign_id=line_item['orderId'], campaign_name=line_item['orderName'], primary_goal=primary_goal, start=start_datetime, status=line_item['status'], targeting=targeting, value_cost_per_unit=value_cost_per_unit, creative_placeholder=line_item['creativePlaceholders'], target_platform=line_item.get('targetPlatform'), )