コード例 #1
0
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()
コード例 #2
0
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()
コード例 #3
0
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'),
    )
コード例 #4
0
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"),
    )
コード例 #5
0
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'),
    )