本文整理汇总了Python中r2.lib.utils.to36函数的典型用法代码示例。如果您正苦于以下问题:Python to36函数的具体用法?Python to36怎么用?Python to36使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了to36函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _to_fn
def _to_fn(cls, id_):
'''Convert id_ to a fullname (equivalent to "link._fullname", but doesn't
require an instance of the class)
'''
return (cls._type_prefix + r2utils.to36(cls._type_id) + '_' +
r2utils.to36(id_))
示例2: port_cassavotes
def port_cassavotes():
from r2.models import Vote, Account, Link, Comment
from r2.models.vote import CassandraVote, CassandraLinkVote, CassandraCommentVote
from r2.lib.db.tdb_cassandra import CL
from r2.lib.utils import fetch_things2, to36, progress
ts = [(Vote.rel(Account, Link), CassandraLinkVote),
(Vote.rel(Account, Comment), CassandraCommentVote)]
dataattrs = set(['valid_user', 'valid_thing', 'ip', 'organic'])
for prel, crel in ts:
vq = prel._query(sort=desc('_date'),
data=True,
eager_load=False)
vq = fetch_things2(vq)
vq = progress(vq, persec=True)
for v in vq:
t1 = to36(v._thing1_id)
t2 = to36(v._thing2_id)
cv = crel(thing1_id = t1,
thing2_id = t2,
date=v._date,
name=v._name)
for dkey, dval in v._t.iteritems():
if dkey in dataattrs:
setattr(cv, dkey, dval)
cv._commit(write_consistency_level=CL.ONE)
示例3: __init__
def __init__(self, link, depth, parent_id = None):
if parent_id is not None:
id36 = utils.to36(parent_id)
self.parent_id = parent_id
self.parent_name = "t%s_%s" % (utils.to36(Comment._type_id), id36)
self.parent_permalink = link.make_permalink_slow() + id36
self.link_name = link._fullname
self.link_id = link._id
self.depth = depth
self.children = []
self.count = 0
示例4: get_recommended
def get_recommended(userid, age = 2, sort='relevance', num_users=10):
u = get_users_for_user(userid)[:num_users]
if not u: return []
voter = Vote.rels[(Account, Link)]
tables = tdb.get_rel_type_table(voter._type_id)
votertable = tables[0]
acct_col = votertable.c.thing1_id
link_col = votertable.c.thing2_id
date_col = votertable.c.date
count = sa.func.count(acct_col)
linktable = tables[2]
# dlinktable, linktable = tdb.types_id[Link._type_id].data_table
link_id_col = linktable.c.thing_id
query = [sa.or_(*[acct_col == x for x in u]),
date_col > datetime.now(g.tz)-timedelta(age)]
cols = [link_col, count]
if sort == 'new':
sort = 'date'
elif sort == 'top':
sort = 'score'
if sort and sort != 'relevance':
query.append(link_id_col == link_col)
s = tdb.translate_sort(linktable, sort)
order = [sa.desc(s), sa.desc(link_id_col)]
cols = [link_id_col, count]
group_by = [link_id_col, s]
else:
order = [sa.desc(count), sa.desc(link_col)]
group_by = link_col
# #TODO: wish I could just use query_rules
# if c.user and c.user.subreddits:
# query.append(dlinktable.c.thing_id == linktable.c.thing_id)
# q = sa.and_(dlinktable.c.key == 'sr_id',
# sa.or_(*[dlinktable.c.value == x
# for x in c.user.subreddits]))
# query.append(q)
res = sa.select(cols, sa.and_(*query),
group_by=group_by,
order_by=order).execute()
prefix = "t%s" % to36(Link._type_id)
return ["%s_%s" % (prefix, to36(x)) for x, y in res.fetchall()]
示例5: __init__
def __init__(self, link, depth, parent_id=None):
from r2.lib.wrapped import CachedVariable
if parent_id is not None:
id36 = utils.to36(parent_id)
self.parent_id = parent_id
self.parent_name = "t%s_%s" % (utils.to36(Comment._type_id), id36)
self.parent_permalink = link.make_permalink_slow() + id36
self.link_name = link._fullname
self.link_id = link._id
self.depth = depth
self.children = []
self.count = 0
self.previous_visits_hex = CachedVariable("previous_visits_hex")
示例6: _process
def _process(t):
thing_id = t.thing_id
id36 = to36(thing_id)
link_id = t.link_id
link_id36 = to36(link_id)
ups, downs, timestamp = t.ups, t.downs, t.timestamp
yield link_id36+'_controversy', id36, sorts.controversy(ups, downs)
yield link_id36+'_hot', id36, sorts._hot(ups, downs, timestamp)
yield link_id36+'_confidence', id36, sorts.confidence(ups, downs)
yield link_id36+'_score', id36, sorts.score(ups, downs)
yield link_id36+'_date', id36, timestamp
示例7: port_cassasaves
def port_cassasaves(after_id=None, estimate=12489897):
from r2.models import SaveHide, CassandraSave
from r2.lib.db.operators import desc
from r2.lib.db.tdb_cassandra import CL
from r2.lib.utils import fetch_things2, to36, progress
q = SaveHide._query(SaveHide.c._name == "save", sort=desc("_date"), data=False, eager_load=False)
if after_id is not None:
q._after(SaveHide._byID(after_id))
for sh in progress(fetch_things2(q), estimate=estimate):
csh = CassandraSave(thing1_id=to36(sh._thing1_id), thing2_id=to36(sh._thing2_id), date=sh._date)
csh._commit(write_consistency_level=CL.ONE)
示例8: sup_json_cached
def sup_json_cached(period, last_time):
#we need to re-add MIN_PERIOD because we moved back that far with
#the call to make_last_time
target_time = last_time + MIN_PERIOD - period
updates = ''
#loop backwards adding MIN_PERIOD chunks until last_time is as old
#as target time
while last_time >= target_time:
updates += g.cache.get(cache_key(last_time)) or ''
last_time -= MIN_PERIOD
supdates = []
if updates:
for u in ifilter(None, updates.split(',')):
sup_id, time = u.split(':')
time = int(time)
if time >= target_time:
supdates.append([sup_id, to36(time)])
update_time = datetime.utcnow()
since_time = datetime.utcfromtimestamp(target_time)
json = simplejson.dumps({'updated_time' : rfc3339_date_str(update_time),
'since_time' : rfc3339_date_str(since_time),
'period' : period,
'available_periods' : period_urls(),
'updates' : supdates})
#undo json escaping
json = json.replace('\/', '/')
return json
示例9: _get_sr_restriction
def _get_sr_restriction(sr):
'''Return a solr-appropriate query string that restricts
results to only contain results from self.sr
'''
bq = []
if (not sr) or sr == All or isinstance(sr, DefaultSR):
return None
elif isinstance(sr, MultiReddit):
for sr_id in sr.sr_ids:
bq.append("sr_id:%s" % sr_id)
elif isinstance(sr, DomainSR):
bq = ["site:'%s'" % sr.domain]
elif sr == Friends:
if not c.user_is_loggedin or not c.user.friends:
return None
friend_ids = c.user.friends
friends = ["author_fullname:'%s'" %
Account._fullname_from_id36(r2utils.to36(id_))
for id_ in friend_ids]
bq.extend(friends)
elif isinstance(sr, ModContribSR):
for sr_id in sr.sr_ids:
bq.append("sr_id:%s" % sr_id)
elif not isinstance(sr, FakeSubreddit):
bq = ["sr_id:%s" % sr._id]
return ' OR '.join(bq)
示例10: _get_sr_restriction
def _get_sr_restriction(sr):
"""Return a cloudsearch appropriate query string that restricts
results to only contain results from self.sr
"""
bq = []
if (not sr) or sr == All or isinstance(sr, DefaultSR):
return None
elif isinstance(sr, MultiReddit):
bq = ["(or"]
for sr_id in sr.sr_ids:
bq.append("sr_id:%s" % sr_id)
bq.append(")")
elif isinstance(sr, DomainSR):
bq = ["site:'%s'" % sr.domain]
elif sr == Friends:
if not c.user_is_loggedin or not c.user.friends:
return None
bq = ["(or"]
# The query limit is roughly 8k bytes. Limit to 200 friends to
# avoid getting too close to that limit
friend_ids = c.user.friends[:200]
friends = ["author_fullname:'%s'" % Account._fullname_from_id36(r2utils.to36(id_)) for id_ in friend_ids]
bq.extend(friends)
bq.append(")")
elif isinstance(sr, ModContribSR):
bq = ["(or"]
for sr_id in sr.sr_ids:
bq.append("sr_id:%s" % sr_id)
bq.append(")")
elif not isinstance(sr, FakeSubreddit):
bq = ["sr_id:%s" % sr._id]
return " ".join(bq)
示例11: GET_oldinfo
def GET_oldinfo(self, article, type, dest, rest=None, comment=''):
"""Legacy: supporting permalink pages from '06,
and non-search-engine-friendly links"""
if not (dest in ('comments','related','details')):
dest = 'comments'
if type == 'ancient':
#this could go in config, but it should never change
max_link_id = 10000000
new_id = max_link_id - int(article._id)
return self.redirect('/info/' + to36(new_id) + '/' + rest)
if type == 'old':
new_url = "/%s/%s/%s" % \
(dest, article._id36,
quote_plus(title_to_url(article.title).encode('utf-8')))
if not c.default_sr:
new_url = "/r/%s%s" % (c.site.name, new_url)
if comment:
new_url = new_url + "/%s" % comment._id36
if c.extension:
new_url = new_url + "/.%s" % c.extension
new_url = new_url + query_string(request.get)
# redirect should be smarter and handle extensions, etc.
return self.redirect(new_url, code=301)
示例12: by_sr
def by_sr(cls, sr_id, create=False):
try:
return cls._byID(to36(sr_id))
except tdb_cassandra.NotFound:
if create:
return cls._new(sr_id)
raise
示例13: cached_query_wrapper
def cached_query_wrapper(*args):
# build the row key from the function name and arguments
assert fn.__name__.startswith("get_")
row_key_components = [fn.__name__[len('get_'):]]
if len(args) > 0:
# we want to accept either a Thing or a thing's ID at this
# layer, but the query itself should always get just an ID
if isinstance(args[0], Thing):
args = list(args)
args[0] = args[0]._id
if isinstance(args[0], (int, long)):
serialized = to36(args[0])
else:
serialized = str(args[0])
row_key_components.append(serialized)
row_key_components.extend(str(x) for x in args[1:])
row_key = '.'.join(row_key_components)
query = fn(*args)
query_sort = query._sort
try:
is_precomputed = query.precomputed
except AttributeError:
is_precomputed = _is_query_precomputed(query)
return CachedQuery(model, row_key, query_sort, filter_fn,
is_precomputed)
示例14: add_target_fields
def add_target_fields(self, target):
if not target:
return
from r2.models import Comment, Link, Message
self.add("target_id", target._id)
self.add("target_fullname", target._fullname)
self.add("target_type", target.__class__.__name__.lower())
# If the target is an Account or Subreddit (or has a "name" attr),
# add the target_name
if hasattr(target, "name"):
self.add("target_name", target.name)
# Pass in the author of the target for comments, links, & messages
elif isinstance(target, (Comment, Link, Message)):
author = target.author_slow
if target._deleted or author._deleted:
self.add("target_author_id", 0)
self.add("target_author_name", "[deleted]")
else:
self.add("target_author_id", author._id)
self.add("target_author_name", author.name)
if isinstance(target, Link) and not target.is_self:
self.add("target_url", target.url)
self.add("target_url_domain", target.link_domain())
elif isinstance(target, Comment):
link_fullname = Link._fullname_from_id36(to36(target.link_id))
self.add("link_id", target.link_id)
self.add("link_fullname", link_fullname)
示例15: cached_query_wrapper
def cached_query_wrapper(*args):
# build the row key from the function name and arguments
assert fn.__name__.startswith("get_")
row_key_components = [fn.__name__[len('get_'):]]
if len(args) > 0:
# we want to accept either a Thing or a thing's ID at this
# layer, but the query itself should always get just an ID
if isinstance(args[0], Thing):
args = list(args)
args[0] = args[0]._id
thing_id = to36(args[0])
row_key_components.append(thing_id)
row_key_components.extend(str(x) for x in args[1:])
row_key = '.'.join(row_key_components)
query = fn(*args)
if query:
# sql-backed query
query_sort = query._sort
is_precomputed = _is_query_precomputed(query)
else:
# pure-cassandra query
assert sort
query_sort = sort
is_precomputed = False
return CachedQuery(model, row_key, query_sort, filter_fn,
is_precomputed)