本文整理汇总了Python中r2.models.PromotionWeights.query方法的典型用法代码示例。如果您正苦于以下问题:Python PromotionWeights.query方法的具体用法?Python PromotionWeights.query怎么用?Python PromotionWeights.query使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类r2.models.PromotionWeights
的用法示例。
在下文中一共展示了PromotionWeights.query方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_sold_pageviews
# 需要导入模块: from r2.models import PromotionWeights [as 别名]
# 或者: from r2.models.PromotionWeights import query [as 别名]
def get_sold_pageviews(srs, start, end, ignore=None):
srs, is_single = tup(srs, ret_is_single=True)
sr_names = ['' if isinstance(sr, DefaultSR) else sr.name for sr in srs]
dates = set(get_date_range(start, end))
ignore = [] if ignore is None else ignore
q = (PromotionWeights.query()
.filter(PromotionWeights.sr_name.in_(sr_names))
.filter(PromotionWeights.date.in_(dates)))
campaign_ids = {pw.promo_idx for pw in q}
campaigns = PromoCampaign._byID(campaign_ids, data=True, return_dict=False)
ret = {sr.name: dict.fromkeys(dates, 0) for sr in srs}
for camp in campaigns:
if camp.trans_id == NO_TRANSACTION:
continue
if ignore and camp._id in ignore:
continue
if camp.impressions <= 0:
# pre-CPM campaign
continue
sr_name = camp.sr_name or DefaultSR.name
daily_impressions = camp.impressions / camp.ndays
camp_dates = set(get_date_range(camp.start_date, camp.end_date))
for date in camp_dates.intersection(dates):
ret[sr_name][date] += daily_impressions
if is_single:
return ret[srs[0].name]
else:
return ret
示例2: get_campaigns_by_date
# 需要导入模块: from r2.models import PromotionWeights [as 别名]
# 或者: from r2.models.PromotionWeights import query [as 别名]
def get_campaigns_by_date(srs, start, end, ignore=None):
srs, is_single = tup(srs, ret_is_single=True)
sr_names = ['' if isinstance(sr, DefaultSR) else sr.name for sr in srs]
dates = set(get_date_range(start, end))
q = (PromotionWeights.query()
.filter(PromotionWeights.sr_name.in_(sr_names))
.filter(PromotionWeights.date.in_(dates)))
if ignore:
q = q.filter(PromotionWeights.promo_idx != ignore._id)
campaign_ids = {pw.promo_idx for pw in q}
campaigns = PromoCampaign._byID(campaign_ids, data=True, return_dict=False)
transaction_ids = {camp.trans_id for camp in campaigns
if camp.trans_id != NO_TRANSACTION}
if transaction_ids:
transactions = Bid.query().filter(Bid.transaction.in_(transaction_ids))
transaction_by_id = {bid.transaction: bid for bid in transactions}
else:
transaction_by_id = {}
ret = {sr.name: dict.fromkeys(dates) for sr in srs}
for srname, date_dict in ret.iteritems():
for date in date_dict:
ret[srname][date] = []
for camp in campaigns:
if camp.trans_id == NO_TRANSACTION:
continue
if camp.impressions <= 0:
# pre-CPM campaign
continue
transaction = transaction_by_id[camp.trans_id]
if not (transaction.is_auth() or transaction.is_charged()):
continue
sr_names = camp.target.subreddit_names
camp_dates = set(get_date_range(camp.start_date, camp.end_date))
for date in camp_dates.intersection(dates):
for sr_name in sr_names:
ret[sr_name][date].append(camp)
if is_single:
return ret[srs[0].name]
else:
return ret