Esempio n. 1
0
def set_live_promotions(links, weights, which=("cass", "permacache")):
    if "permacache" in which:
        timer = g.stats.get_timer("promote.set_live.permacache")
        timer.start()
        g.permacache.set(promotion_key(), (links, weights))
        timer.stop()
    if "cass" in which:
        timer = g.stats.get_timer("promote.set_live.cass")
        timer.start()

        # First, figure out which subreddits have had ads recently
        today = promo_datetime_now()
        yesterday = today - timedelta(days=1)
        tomorrow = today + timedelta(days=1)
        promo_weights = PromotionWeights.get_campaigns(yesterday, tomorrow)
        subreddit_names = set(p.sr_name for p in promo_weights)
        subreddits = Subreddit._by_name(subreddit_names).values()
        # Set the default for those subreddits to no ads
        all_weights = {sr._id: [] for sr in subreddits}

        # Mix in the currently live ads
        all_weights.update(weights)
        if '' in all_weights:
            all_weights[LiveAdWeights.FRONT_PAGE] = all_weights.pop('')

        LiveAdWeights.set_all_from_weights(all_weights)
        timer.stop()