• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python promote.get_billable_impressions函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中r2.lib.promote.get_billable_impressions函数的典型用法代码示例。如果您正苦于以下问题:Python get_billable_impressions函数的具体用法?Python get_billable_impressions怎么用?Python get_billable_impressions使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了get_billable_impressions函数的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: is_overdelivered

def is_overdelivered(campaign):
    if (campaign.cost_basis != promo.PROMOTE_COST_BASIS.fixed_cpm or
            campaign.is_house):
        return False

    billable_impressions = promote.get_billable_impressions(campaign)
    return billable_impressions >= campaign.impressions + ADZERK_IMPRESSION_BUMP
开发者ID:bsdo64,项目名称:reddit-plugin-adzerk,代码行数:7,代码来源:adzerkpromote.py


示例2: POST_refund_campaign

 def POST_refund_campaign(self, form, jquery, link, campaign):
     billable_impressions = promote.get_billable_impressions(campaign)
     billable_amount = promote.get_billable_amount(campaign, billable_impressions)
     refund_amount = campaign.bid - billable_amount
     if refund_amount > 0:
         promote.refund_campaign(link, campaign, billable_amount)
         form.set_html(".status", _("refund succeeded"))
     else:
         form.set_html(".status", _("refund not needed"))
开发者ID:andre-d,项目名称:reddit,代码行数:9,代码来源:promotecontroller.py


示例3: finalize_completed_campaigns

def finalize_completed_campaigns(daysago=1):
    # PromoCampaign.end_date is utc datetime with year, month, day only
    now = datetime.datetime.now(g.tz)
    date = now - datetime.timedelta(days=daysago)
    date = date.replace(hour=0, minute=0, second=0, microsecond=0)

    q = PromoCampaign._query(PromoCampaign.c.end_date == date,
                             # exclude no transaction and freebies
                             PromoCampaign.c.trans_id > 0,
                             data=True)
    campaigns = list(q)

    # check that traffic is up to date
    earliest_campaign = min(campaigns, key=lambda camp: camp.start_date)
    start, end = promote.get_total_run(earliest_campaign)
    missing_traffic = get_missing_traffic(start.replace(tzinfo=None),
                                          date.replace(tzinfo=None))
    if missing_traffic:
        raise ValueError("Can't finalize campaigns finished on %s."
                         "Missing traffic from %s" % (date, missing_traffic))

    links = Link._byID([camp.link_id for link in links], data=True)

    for camp in campaigns:
        if hasattr(camp, 'refund_amount'):
            continue

        link = links[camp.link_id]
        billable_impressions = promote.get_billable_impressions(camp)
        billable_amount = promote.get_billable_amount(camp,
                                                      billable_impressions)

        if billable_amount >= camp.bid:
            text = ('%s completed with $%s billable (%s impressions @ $%s).'
                    % (camp, billable_amount, billable_impressions, camp.cpm))
            PromotionLog.add(link, text)
            refund_amount = 0.
        else:
            refund_amount = camp.bid - billable_amount
            user = Account._byID(link.author_id, data=True)
            try:
                success = authorize.refund_transaction(user, camp.trans_id,
                                                       camp._id, refund_amount)
            except authorize.AuthorizeNetException as e:
                text = ('%s $%s refund failed' % (camp, refund_amount))
                PromotionLog.add(link, text)
                g.log.debug(text + ' (response: %s)' % e)
                continue
            text = ('%s completed with $%s billable (%s impressions @ $%s).'
                    ' %s refunded.' % (camp, billable_amount,
                                       billable_impressions, camp.cpm,
                                       refund_amount))
            PromotionLog.add(link, text)

        camp.refund_amount = refund_amount
        camp._commit()
开发者ID:bsimpson63,项目名称:reddit-plugin-adzerkpromo,代码行数:56,代码来源:adzerkpromo.py


示例4: POST_refund_campaign

 def POST_refund_campaign(self, form, jquery, link, campaign):
     billable_impressions = promote.get_billable_impressions(campaign)
     billable_amount = promote.get_billable_amount(campaign,
                                                   billable_impressions)
     refund_amount = promote.get_refund_amount(campaign, billable_amount)
     if refund_amount > 0:
         promote.refund_campaign(link, campaign, billable_amount,
                                 billable_impressions)
         form.set_html('.status', _('refund succeeded'))
     else:
         form.set_html('.status', _('refund not needed'))
开发者ID:AD42,项目名称:reddit,代码行数:11,代码来源:promotecontroller.py


示例5: POST_refund_campaign

    def POST_refund_campaign(self, form, jquery, link, campaign):
        if not link or not campaign or link._id != campaign.link_id:
            return abort(404, "not found")

        billable_impressions = promote.get_billable_impressions(campaign)
        billable_amount = promote.get_billable_amount(campaign, billable_impressions)
        refund_amount = promote.get_refund_amount(campaign, billable_amount)
        if refund_amount > 0:
            promote.refund_campaign(link, campaign, billable_amount, billable_impressions)
            form.set_html(".status", _("refund succeeded"))
        else:
            form.set_html(".status", _("refund not needed"))
开发者ID:DorianGray,项目名称:reddit,代码行数:12,代码来源:promotecontroller.py


示例6: is_overdelivered

def is_overdelivered(campaign):
    if not hasattr(campaign, 'cpm') or not campaign.priority.cpm:
        return False

    billable_impressions = promote.get_billable_impressions(campaign)
    return billable_impressions >= campaign.impressions + ADZERK_IMPRESSION_BUMP
开发者ID:curioussavage,项目名称:reddit-plugin-adzerk,代码行数:6,代码来源:adzerkpromote.py


示例7: update_flight


#.........这里部分代码省略.........
            siteZones.append({
                'SiteId': g.az_selfserve_mobile_web_site_id,
                'IsExclude': False,
            })

        if len(siteZones):
            d.update({
                'SiteZoneTargeting': siteZones
            })

    # special handling for location conversions between reddit and adzerk
    if campaign.location:
        campaign_country = campaign.location.country
        campaign_region = campaign.location.region
        if campaign.location.metro:
            campaign_metro = int(campaign.location.metro)
        else:
            campaign_metro = None

    if az_flight and az_flight.GeoTargeting:
        # special handling for geotargeting of existing flights
        # can't update geotargeting through the Flight endpoint, do it manually
        existing = az_flight.GeoTargeting[0]
        az_geotarget = adzerk_api.GeoTargeting._from_item(existing)

        if (campaign.location and
            (campaign_country != az_geotarget.CountryCode or
             campaign_region != az_geotarget.Region or
             campaign_metro != az_geotarget.MetroCode or
             az_geotarget.IsExclude)):
            # existing geotargeting doesn't match current location
            az_geotarget.CountryCode = campaign_country
            az_geotarget.Region = campaign_region
            az_geotarget.MetroCode = campaign_metro
            az_geotarget.IsExclude = False
            az_geotarget._send(az_flight.Id)
            log_text = 'updated geotargeting to %s' % campaign.location
            PromotionLog.add(link, log_text)
        elif not campaign.location:
            # flight should no longer be geotargeted
            az_geotarget._delete(az_flight.Id)
            log_text = 'deleted geotargeting'
            PromotionLog.add(link, log_text)

        # only allow one geotarget per flight
        for existing in az_flight.GeoTargeting[1:]:
            az_geotarget = adzerk_api.GeoTargeting._from_item(existing)
            az_geotarget._delete(az_flight.Id)

        # NOTE: need to unset GeoTargeting otherwise it will be added to the
        # flight again when we _send updates
        az_flight.GeoTargeting = None

    elif campaign.location:
        # flight endpoint works when a new flight is being created or an
        # existing one that didn't have geotargeting is being updated
        d.update({
            'GeoTargeting': [{
                'CountryCode': campaign_country,
                'Region': campaign_region,
                'MetroCode': campaign_metro,
                'IsExclude': False,
            }],
        })
    else:
        # no geotargeting, either a new flight is being created or an existing
        # flight is being updated that wasn't geotargeted
        d.update({
            'GeoTargeting': [],
        })

    if az_flight:
        changed = update_changed(az_flight, **d)
        change_strs = make_change_strings(changed)

        if campaign_overdelivered:
            billable = promote.get_billable_impressions(campaign)
            over_str = 'overdelivered %s/%s' % (billable, campaign.impressions)
            change_strs.append(over_str)

        if change_strs:
            log_text = 'updated %s: ' % az_flight + ', '.join(change_strs)
        else:
            log_text = None
    else:
        d.update({'Name': campaign._fullname})
        az_flight = adzerk_api.Flight.create(**d)
        campaign.adzerk_flight_id = az_flight.Id
        campaign._commit()
        log_text = 'created %s' % az_flight

    if log_text:
        PromotionLog.add(link, log_text)
        g.log.info(log_text)

    if campaign_overdelivered:
        campaign.adzerk_flight_overdelivered = True
        campaign._commit()

    return az_flight
开发者ID:curioussavage,项目名称:reddit-plugin-adzerk,代码行数:101,代码来源:adzerkpromote.py


示例8: update_flight


#.........这里部分代码省略.........
            az_geotarget = adzerk_api.GeoTargeting._from_item(existing)
            az_geotarget._delete(az_flight.Id)

        # NOTE: need to unset GeoTargeting otherwise it will be added to the
        # flight again when we _send updates
        az_flight.GeoTargeting = None

    elif campaign.location:
        # flight endpoint works when a new flight is being created or an
        # existing one that didn't have geotargeting is being updated
        d.update({
            'GeoTargeting': [{
                'CountryCode': campaign_country,
                'Region': campaign_region,
                'MetroCode': campaign_metro,
                'IsExclude': False,
            }],
        })
    else:
        # no geotargeting, either a new flight is being created or an existing
        # flight is being updated that wasn't geotargeted
        d.update({
            'GeoTargeting': [],
        })

    request_error = None
    additional_data = dict(
        requires_approval=campaign_needs_approval,
        requires_payment=campaign_needs_payment,
        is_overdelivered=campaign_overdelivered,
        is_paused=campaign_is_paused,
        is_terminated=campaign_is_terminated,
    )

    if az_flight:
        try:
            changed = update_changed(az_flight, **d)
        except adzerk_api.AdzerkError as e:
            request_error = e
        finally:
            g.ad_events.adzerk_api_request(
                request_type="update_flight",
                thing=campaign,
                request_body=d,
                triggered_by=triggered_by,
                additional_data=additional_data,
                request_error=request_error,
            )

            # re-raise after sending event to requeue item.
            if request_error:
                raise request_error

        change_strs = make_change_strings(changed)

        if campaign_overdelivered:
            billable = promote.get_billable_impressions(campaign)
            over_str = 'overdelivered %s/%s' % (billable, campaign.impressions)
            change_strs.append(over_str)

        if change_strs:
            log_text = 'updated %s: ' % az_flight + ', '.join(change_strs)
        else:
            log_text = None
    else:
        d.update({'Name': campaign._fullname})

        try:
            az_flight = adzerk_api.Flight.create(**d)
        except adzerk_api.AdzerkError as e:
            request_error = e
        finally:
            g.ad_events.adzerk_api_request(
                request_type="create_flight",
                thing=campaign,
                request_body=d,
                triggered_by=triggered_by,
                additional_data=additional_data,
                request_error=request_error,
            )

            # re-raise after sending event to requeue item.
            if request_error:
                raise request_error

        campaign.external_flight_id = az_flight.Id
        campaign._commit()

        PromoCampaignByFlightIdCache.add(campaign)
        log_text = 'created %s' % az_flight

    if log_text:
        PromotionLog.add(link, log_text)
        g.log.info(log_text)

    if campaign_overdelivered:
        campaign.external_flight_overdelivered = True
        campaign._commit()

    return az_flight
开发者ID:bsdo64,项目名称:reddit-plugin-adzerk,代码行数:101,代码来源:adzerkpromote.py


示例9: is_overdelivered

def is_overdelivered(campaign):
    if not hasattr(campaign, 'cpm'):
        return False

    billable_impressions = promote.get_billable_impressions(campaign)
    return billable_impressions >= campaign.impressions
开发者ID:bsimpson63,项目名称:reddit-plugin-adzerk,代码行数:6,代码来源:adzerkpromote.py


示例10: update_flight


#.........这里部分代码省略.........
    if campaign.platform != 'all':
        d.update({
            'SiteZoneTargeting': [{
                'SiteId': g.az_selfserve_site_ids[campaign.platform],
                'IsExclude': False,
            }],
        })

    # special handling for location conversions between reddit and adzerk
    if campaign.location:
        campaign_country = campaign.location.country
        campaign_region = campaign.location.region
        if campaign.location.metro:
            campaign_metro = int(campaign.location.metro)
        else:
            campaign_metro = None

    if az_flight and az_flight.GeoTargeting:
        # special handling for geotargeting of existing flights
        # can't update geotargeting through the Flight endpoint, do it manually
        existing = az_flight.GeoTargeting[0]
        az_geotarget = adzerk_api.GeoTargeting._from_item(existing)

        if (campaign.location and
            (campaign_country != az_geotarget.CountryCode or
             campaign_region != az_geotarget.Region or
             campaign_metro != az_geotarget.MetroCode or
             az_geotarget.IsExclude)):
            # existing geotargeting doesn't match current location
            az_geotarget.CountryCode = campaign_country
            az_geotarget.Region = campaign_region
            az_geotarget.MetroCode = campaign_metro
            az_geotarget.IsExclude = False
            az_geotarget._send(az_flight.Id)
            log_text = 'updated geotargeting to %s' % campaign.location
            PromotionLog.add(link, log_text)
        elif not campaign.location:
            # flight should no longer be geotargeted
            az_geotarget._delete(az_flight.Id)
            log_text = 'deleted geotargeting'
            PromotionLog.add(link, log_text)

        # only allow one geotarget per flight
        for existing in az_flight.GeoTargeting[1:]:
            az_geotarget = adzerk_api.GeoTargeting._from_item(existing)
            az_geotarget._delete(az_flight.Id)

        # NOTE: need to unset GeoTargeting otherwise it will be added to the
        # flight again when we _send updates
        az_flight.GeoTargeting = None

    elif campaign.location:
        # flight endpoint works when a new flight is being created or an
        # existing one that didn't have geotargeting is being updated
        d.update({
            'GeoTargeting': [{
                'CountryCode': campaign_country,
                'Region': campaign_region,
                'MetroCode': campaign_metro,
                'IsExclude': False,
            }],
        })
    else:
        # no geotargeting, either a new flight is being created or an existing
        # flight is being updated that wasn't geotargeted
        d.update({
            'GeoTargeting': [],
        })

    if az_flight:
        changed = update_changed(az_flight, **d)
        change_strs = make_change_strings(changed)

        if campaign_overdelivered:
            billable = promote.get_billable_impressions(campaign)
            over_str = 'overdelivered %s/%s' % (billable, campaign.impressions)
            change_strs.append(over_str)

        if change_strs:
            log_text = 'updated %s: ' % az_flight + ', '.join(change_strs)
        else:
            log_text = None
    else:
        d.update({'Name': campaign._fullname})
        az_flight = adzerk_api.Flight.create(**d)
        campaign.external_flight_id = az_flight.Id
        campaign._commit()

        PromoCampaignByFlightIdCache.add(campaign)
        log_text = 'created %s' % az_flight

    if log_text:
        PromotionLog.add(link, log_text)
        g.log.info(log_text)

    if campaign_overdelivered:
        campaign.external_flight_overdelivered = True
        campaign._commit()

    return az_flight
开发者ID:nramadas,项目名称:reddit-plugin-adzerk,代码行数:101,代码来源:adzerkpromote.py



注:本文中的r2.lib.promote.get_billable_impressions函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python promote.get_promote_srid函数代码示例发布时间:2022-05-26
下一篇:
Python promote.accept_promotion函数代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap