本文整理汇总了Python中r2.lib.organic.update_pos函数的典型用法代码示例。如果您正苦于以下问题:Python update_pos函数的具体用法?Python update_pos怎么用?Python update_pos使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了update_pos函数的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: organic
def organic(self):
o_links, pos = organic.organic_links(c.user)
if o_links:
# get links in proximity to pos
l = min(len(o_links) - 3, 8)
disp_links = [o_links[(i + pos) % len(o_links)] for i in xrange(-2, l)]
def keep_fn(item):
return item.likes is None and item.keep_item(item)
b = IDBuilder(disp_links, wrap=self.builder_wrapper, skip=True, keep_fn=keep_fn)
o = OrganicListing(
b,
org_links=o_links,
visible_link=o_links[pos],
max_num=self.listing_obj.max_num,
max_score=self.listing_obj.max_score,
).listing()
if len(o.things) > 0:
# only pass through a listing if the links made it
# through our builder
organic.update_pos(pos + 1)
return o
开发者ID:kevinrose,项目名称:diggit,代码行数:25,代码来源:listingcontroller.py
示例2: organic
def organic(self):
o_links, pos = organic.organic_links(c.user)
if o_links:
# get links in proximity to pos
disp_links = [o_links[(i + pos) % len(o_links)] for i in xrange(-2, 8)]
b = IDBuilder(disp_links,
wrap = self.builder_wrapper)
o = OrganicListing(b,
org_links = o_links,
visible_link = o_links[pos],
max_num = self.listing_obj.max_num,
max_score = self.listing_obj.max_score)
organic.update_pos(c.user, (pos + 1) % len(o_links))
return o.listing()
开发者ID:cmak,项目名称:reddit,代码行数:15,代码来源:listingcontroller.py
示例3: organic
def organic(self):
o_links, pos, calculation_key = organic.organic_links(c.user)
if o_links:
# get links in proximity to pos
l = min(len(o_links) - 3, 8)
disp_links = [o_links[(i + pos) % len(o_links)] for i in xrange(-2, l)]
b = IDBuilder(disp_links, wrap = self.builder_wrapper)
o = OrganicListing(b,
org_links = o_links,
visible_link = o_links[pos],
max_num = self.listing_obj.max_num,
max_score = self.listing_obj.max_score).listing()
if len(o.things) > 0:
# only pass through a listing if the links made it
# through our builder
organic.update_pos(pos+1, calculation_key)
return o
开发者ID:EeroHeikkinen,项目名称:ikaros,代码行数:20,代码来源:listingcontroller.py
示例4: spotlight
def spotlight(self):
if (isinstance(c.site, DefaultSR)
and (not c.user_is_loggedin
or (c.user_is_loggedin and c.user.pref_organic))):
spotlight_links = organic.organic_links(c.user)
pos = organic_pos()
if not spotlight_links:
pos = 0
elif pos != 0:
pos = pos % len(spotlight_links)
if c.user.pref_show_sponsors or not c.user.gold:
spotlight_links, pos = promote.insert_promoted(spotlight_links, pos)
trial = populate_spotlight()
# Need to do this again, because if there was a duplicate removed,
# pos might be pointing outside the list.
if not spotlight_links:
pos = 0
elif pos != 0:
pos = pos % len(spotlight_links)
if trial:
spotlight_links.insert(pos, trial._fullname)
if not spotlight_links:
return None
# get links in proximity to pos
num_tl = len(spotlight_links)
if num_tl <= 3:
disp_links = spotlight_links
else:
left_side = max(-1, min(num_tl - 3, 8))
disp_links = [spotlight_links[(i + pos) % num_tl]
for i in xrange(-2, left_side)]
def trial_keep_fn(item):
if trial and trial._fullname == item._fullname:
return True
return organic.keep_fresh_links(item)
def trial_wrap(item):
if item is trial:
w = Wrapped(item)
w.trial_mode = True
w.render_class = LinkOnTrial
return w
return self.builder_wrapper(item)
b = IDBuilder(disp_links,
wrap = trial_wrap if trial else self.builder_wrapper,
num = organic.organic_length,
skip = True,
keep_fn = trial_keep_fn if trial else organic.keep_fresh_links)
try:
vislink = spotlight_links[pos]
except IndexError:
g.log.error("spotlight_links = %r" % spotlight_links)
g.log.error("pos = %d" % pos)
raise
s = SpotlightListing(b, spotlight_links = spotlight_links,
visible_link = vislink,
max_num = self.listing_obj.max_num,
max_score = self.listing_obj.max_score).listing()
if len(s.things) > 0:
# only pass through a listing if the links made it
# through our builder
organic.update_pos(pos+1)
return s
# no organic box on a hot page, then show a random promoted link
elif not isinstance(c.site, DefaultSR) and c.user.pref_show_sponsors:
link_ids = randomized_promotion_list(c.user, c.site)
if link_ids:
res = wrap_links(link_ids, wrapper = self.builder_wrapper,
num = 1, keep_fn = lambda x: x.fresh,
skip = True)
if res.things:
return res
开发者ID:donslice,项目名称:reddit,代码行数:85,代码来源:listingcontroller.py
示例5: spotlight
#.........这里部分代码省略.........
not isinstance(c.site, DefaultSR) and c.user.pref_show_sponsors):
link_ids = None
if self.requested_ad:
link = None
try:
link = Link._by_fullname(self.requested_ad)
except NotFound:
pass
if not (link and link.promoted and
(c.user_is_sponsor or
c.user_is_loggedin and link.author_id == c.user._id)):
return self.abort404()
# check if we can show the requested ad
if promote.is_live_on_sr(link, c.site.name):
link_ids = [link._fullname]
else:
return _("requested campaign not eligible for display")
else:
# no organic box on a hot page, then show a random promoted link
link_ids = randomized_promotion_list(c.user, c.site)
if link_ids:
res = wrap_links(link_ids, wrapper=self.builder_wrapper,
num=1, keep_fn=lambda x: x.fresh, skip=True)
res.parent_name = "promoted"
if res.things:
return res
elif (isinstance(c.site, DefaultSR)
and (not c.user_is_loggedin
or (c.user_is_loggedin and c.user.pref_organic))):
# Spotlight shows rising links. If available, mix in subreddit
# discovery links as well. (These don't count towards ad bids)
spotlight_links = organic.organic_links(c.user)
if hasattr(g, 'sr_discovery_links'):
spotlight_links.extend(g.sr_discovery_links)
random.shuffle(spotlight_links)
spotlight_keep_fn = lambda l: promote.is_promo(l) or organic.keep_fresh_links(l)
num_links = len(spotlight_links)
else:
spotlight_keep_fn = organic.keep_fresh_links
num_links = organic.organic_length
pos = organic_pos()
if not spotlight_links:
pos = 0
elif pos != 0:
pos = pos % len(spotlight_links)
if c.user.pref_show_sponsors or not c.user.gold:
spotlight_links, pos = promote.insert_promoted(spotlight_links, pos)
# Need to do this again, because if there was a duplicate removed,
# pos might be pointing outside the list.
if not spotlight_links:
pos = 0
elif pos != 0:
pos = pos % len(spotlight_links)
if not spotlight_links:
return None
# get links in proximity to pos
num_tl = len(spotlight_links)
if num_tl <= 3:
disp_links = spotlight_links
else:
left_side = max(-1, min(num_tl - 3, 8))
disp_links = [spotlight_links[(i + pos) % num_tl]
for i in xrange(-2, left_side)]
b = IDBuilder(disp_links,
wrap = self.builder_wrapper,
num = num_links,
keep_fn = spotlight_keep_fn,
skip = True)
try:
vislink = spotlight_links[pos]
except IndexError:
g.log.error("spotlight_links = %r" % spotlight_links)
g.log.error("pos = %d" % pos)
raise
s = SpotlightListing(b, spotlight_links = spotlight_links,
visible_link = vislink,
max_num = self.listing_obj.max_num,
max_score = self.listing_obj.max_score).listing()
if len(s.things) > 0:
# only pass through a listing if the links made it
# through our builder
organic.update_pos(pos+1)
return s
开发者ID:LDot,项目名称:reddit,代码行数:101,代码来源:listingcontroller.py
示例6: spotlight
#.........这里部分代码省略.........
# no organic box on a hot page, then show a random promoted link
promo_tuples = randomized_promotion_list(c.user, c.site)
link_ids, camp_ids = zip(*promo_tuples) if promo_tuples else ([],[])
# save campaign-to-link mapping so campaign can be added to
# link data later (for tracking.) Gotcha: assumes each link
# appears for only campaign
campaigns_by_link = dict(promo_tuples)
if link_ids:
res = wrap_links(link_ids, wrapper=self.builder_wrapper,
num=1, keep_fn=lambda x: x.fresh, skip=True)
res.parent_name = "promoted"
if res.things:
# store campaign id for tracking
for thing in res.things:
thing.campaign = campaigns_by_link.get(thing._fullname, None)
return res
elif (isinstance(c.site, DefaultSR)
and (not c.user_is_loggedin
or (c.user_is_loggedin and c.user.pref_organic))):
spotlight_links = organic.organic_links(c.user)
pos = organic_pos()
if not spotlight_links:
pos = 0
elif pos != 0:
pos = pos % len(spotlight_links)
spotlight_keep_fn = organic.keep_fresh_links
num_links = organic.organic_length
# If prefs allow it, mix in promoted links and sr discovery content
if c.user.pref_show_sponsors or not c.user.gold:
if g.live_config['sr_discovery_links']:
spotlight_links.extend(g.live_config['sr_discovery_links'])
random.shuffle(spotlight_links)
spotlight_keep_fn = lambda l: promote.is_promo(l) or organic.keep_fresh_links(l)
num_links = len(spotlight_links)
spotlight_links, pos, campaigns_by_link = promote.insert_promoted(spotlight_links,
pos)
# Need to do this again, because if there was a duplicate removed,
# pos might be pointing outside the list.
if not spotlight_links:
pos = 0
elif pos != 0:
pos = pos % len(spotlight_links)
if not spotlight_links:
return None
# get links in proximity to pos
num_tl = len(spotlight_links)
if num_tl <= 3:
disp_links = spotlight_links
else:
left_side = max(-1, min(num_tl - 3, 8))
disp_links = [spotlight_links[(i + pos) % num_tl]
for i in xrange(-2, left_side)]
b = IDBuilder(disp_links,
wrap = self.builder_wrapper,
num = num_links,
keep_fn = spotlight_keep_fn,
skip = True)
try:
vislink = spotlight_links[pos]
except IndexError:
g.log.error("spotlight_links = %r" % spotlight_links)
g.log.error("pos = %d" % pos)
raise
s = SpotlightListing(b, spotlight_items = spotlight_links,
visible_item = vislink,
max_num = self.listing_obj.max_num,
max_score = self.listing_obj.max_score).listing()
has_subscribed = c.user.has_subscribed
promo_visible = promote.is_promo(s.lookup[vislink])
if not promo_visible:
prob = g.live_config['spotlight_interest_sub_p'
if has_subscribed else
'spotlight_interest_nosub_p']
if random.random() < prob:
bar = InterestBar(has_subscribed)
s.spotlight_items.insert(pos, bar)
s.visible_item = bar
if len(s.things) > 0:
# only pass through a listing if the links made it
# through our builder
organic.update_pos(pos+1)
# add campaign id to promoted links for tracking
for thing in s.things:
thing.campaign = campaigns_by_link.get(thing._fullname, None)
return s
开发者ID:jcald,项目名称:reddit,代码行数:101,代码来源:listingcontroller.py
示例7: POST_update_pos
def POST_update_pos(self, res, pos):
if pos is not None:
update_pos(c.user, pos)
开发者ID:cmak,项目名称:reddit,代码行数:3,代码来源:api.py
注:本文中的r2.lib.organic.update_pos函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论