def GET_current_promos(self): render_list = list(wrap_links(get_promoted())) for x in render_list: if x.promote_until: x.promote_expires = timetext(datetime.now(g.tz) - x.promote_until) page = PromotePage('current_promos', content = PromotedLinks(render_list)) return page.render()
def insert_promoted(link_names, sr_ids, logged_in): """ Inserts promoted links into an existing organic list. Destructive on `link_names' """ promoted_items = get_promoted() if not promoted_items: return def my_keepfn(l): if l.promoted_subscribersonly and l.sr_id not in sr_ids: return False else: return keep_link(l) # no point in running the builder over more promoted links than # we'll even use max_promoted = max(1,len(link_names)/promoted_every_n) # in the future, we may want to weight this sorting somehow random.shuffle(promoted_items) # remove any that the user has acted on builder = IDBuilder(promoted_items, skip = True, keep_fn = my_keepfn, num = max_promoted) promoted_items = builder.get_items()[0] if not promoted_items: return #make a copy before we start messing with things orig_promoted = list(promoted_items) # don't insert one at the head of the list 50% of the time for # logged in users, and 50% of the time for logged-off users when # the pool of promoted links is less than 3 (to avoid showing the # same promoted link to the same person too often) if (logged_in or len(promoted_items) < 3) and random.choice((True,False)): promoted_items.insert(0, None) #repeat the same promoted links for non logged in users if not logged_in: while len(promoted_items) * promoted_every_n < len(link_names): promoted_items.extend(orig_promoted) # insert one promoted item for every N items for i, item in enumerate(promoted_items): pos = i * promoted_every_n + i if pos > len(link_names): break elif item is None: continue else: link_names.insert(pos, item._fullname)
def GET_current_promos(self): current_list = promote.get_promoted() b = IDBuilder(current_list) render_list = b.get_items()[0] page = PromotePage('current_promos', content = PromotedLinks(render_list)) return page.render()
def GET_current_promos(self): current_list = get_promoted() b = IDBuilder(current_list) render_list = b.get_items()[0] for x in render_list: if x.promote_until: x.promote_expires = timetext(datetime.now(g.tz) - x.promote_until) page = PromotePage('current_promos', content = PromotedLinks(render_list)) return page.render()