예제 #1
0
 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()
예제 #2
0
파일: organic.py 프로젝트: rajbot/tikical
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)
예제 #3
0
    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()
예제 #4
0
    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()