本文整理汇总了Python中r2.lib.wrapped.Wrapped.collapsed方法的典型用法代码示例。如果您正苦于以下问题:Python Wrapped.collapsed方法的具体用法?Python Wrapped.collapsed怎么用?Python Wrapped.collapsed使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类r2.lib.wrapped.Wrapped
的用法示例。
在下文中一共展示了Wrapped.collapsed方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_items
# 需要导入模块: from r2.lib.wrapped import Wrapped [as 别名]
# 或者: from r2.lib.wrapped.Wrapped import collapsed [as 别名]
def get_items(self):
tree = self.get_tree()
prev = next = None
if not self.parent:
if self.num is not None:
if self.after:
if self.reverse:
tree = filter(
lambda x: tree_sort_fn(x) >= self.after._id, tree)
next = self.after._id
if len(tree) > self.num:
prev = tree[-(self.num+1)][0]
tree = tree[-self.num:]
else:
prev = self.after._id
tree = filter(
lambda x: tree_sort_fn(x) < self.after._id, tree)
if len(tree) > self.num:
tree = tree[:self.num]
next = tree[-1][0]
# generate the set of ids to look up and look them up
message_ids = []
for root, thread in tree:
message_ids.append(root)
message_ids.extend(thread)
if prev:
message_ids.append(prev)
messages = Message._byID(message_ids, data = True, return_dict = False)
wrapped = dict((m._id, m) for m in self.wrap_items(messages))
if prev:
prev = wrapped[prev]
if next:
next = wrapped[next]
final = []
for parent, children in tree:
parent = wrapped[parent]
if children:
# if no parent is specified, check if any of the messages are
# uncollapsed, and truncate the thread
children = [wrapped[child] for child in children]
parent.child = empty_listing()
# if the parent is new, uncollapsed, or focal we don't
# want it to become a moremessages wrapper.
if (self.skip and
not self.parent and not parent.new and parent.is_collapsed
and not (self.focal and self.focal._id == parent._id)):
for i, child in enumerate(children):
if (child.new or not child.is_collapsed or
(self.focal and self.focal._id == child._id)):
break
else:
i = -1
parent = Wrapped(MoreMessages(parent, empty_listing()))
children = children[i:]
parent.child.parent_name = parent._fullname
parent.child.things = []
for child in children:
child.is_child = True
if self.focal and child._id == self.focal._id:
# focal message is never collapsed
child.collapsed = False
child.focal = True
else:
child.collapsed = child.is_collapsed
parent.child.things.append(child)
parent.is_parent = True
# the parent might be the focal message on a permalink page
if self.focal and parent._id == self.focal._id:
parent.collapsed = False
parent.focal = True
else:
parent.collapsed = parent.is_collapsed
final.append(parent)
return (final, prev, next, len(final), len(final))
示例2: get_items
# 需要导入模块: from r2.lib.wrapped import Wrapped [as 别名]
# 或者: from r2.lib.wrapped.Wrapped import collapsed [as 别名]
def get_items(self):
tree = self.get_tree()
prev_item = next_item = None
if not self.parent:
if self.num is not None:
if self.after:
if self.reverse:
tree = filter(
self._tree_filter_reverse,
tree)
next_item = self.after._id
if len(tree) > self.num:
first = tree[-(self.num+1)]
prev_item = first[1][-1] if first[1] else first[0]
tree = tree[-self.num:]
else:
prev_item = self.after._id
tree = filter(
self._tree_filter,
tree)
if len(tree) > self.num:
tree = tree[:self.num]
last = tree[-1]
next_item = last[1][-1] if last[1] else last[0]
# generate the set of ids to look up and look them up
message_ids = []
for root, thread in tree:
message_ids.append(root)
message_ids.extend(thread)
if prev_item:
message_ids.append(prev_item)
messages = Message._byID(message_ids, data = True, return_dict = False)
wrapped = {}
for m in self.wrap_items(messages):
if not self._viewable_message(m):
g.log.warning("%r is not viewable by %s; path is %s" %
(m, c.user.name, request.fullpath))
continue
wrapped[m._id] = m
if prev_item:
prev_item = wrapped[prev_item]
if next_item:
next_item = wrapped[next_item]
final = []
for parent, children in tree:
if parent not in wrapped:
continue
parent = wrapped[parent]
if children:
# if no parent is specified, check if any of the messages are
# uncollapsed, and truncate the thread
children = [wrapped[child] for child in children
if child in wrapped]
parent.child = empty_listing()
# if the parent is new, uncollapsed, or focal we don't
# want it to become a moremessages wrapper.
if (self.skip and
not self.parent and not parent.new and parent.is_collapsed
and not (self.focal and self.focal._id == parent._id)):
for i, child in enumerate(children):
if (child.new or not child.is_collapsed or
(self.focal and self.focal._id == child._id)):
break
else:
i = -1
parent = Wrapped(MoreMessages(parent, empty_listing()))
children = children[i:]
parent.child.parent_name = parent._fullname
parent.child.things = []
for child in children:
child.is_child = True
if self.focal and child._id == self.focal._id:
# focal message is never collapsed
child.collapsed = False
child.focal = True
else:
child.collapsed = child.is_collapsed
parent.child.things.append(child)
parent.is_parent = True
# the parent might be the focal message on a permalink page
if self.focal and parent._id == self.focal._id:
parent.collapsed = False
parent.focal = True
else:
parent.collapsed = parent.is_collapsed
final.append(parent)
return (final, prev_item, next_item, len(final), len(final))
示例3: get_items
# 需要导入模块: from r2.lib.wrapped import Wrapped [as 别名]
# 或者: from r2.lib.wrapped.Wrapped import collapsed [as 别名]
def get_items(self):
tree = self.get_tree()
tree, prev_item, next_item = self._apply_pagination(tree)
message_ids = []
for parent_id, child_ids in tree:
message_ids.append(parent_id)
message_ids.extend(child_ids)
if prev_item:
message_ids.append(prev_item)
messages = Message._byID(message_ids, data=True, return_dict=False)
wrapped = {m._id: m for m in self.wrap_items(messages)}
if prev_item:
prev_item = wrapped[prev_item]
if next_item:
next_item = wrapped[next_item]
final = []
for parent_id, child_ids in tree:
if parent_id not in wrapped:
continue
parent = wrapped[parent_id]
if not self._viewable_message(parent):
continue
children = [wrapped[child_id] for child_id in child_ids if child_id in wrapped]
depth = {parent_id: 0}
substitute_parents = {}
if (
children
and self.skip
and not self.threaded
and not self.parent
and not parent.new
and parent.is_collapsed
):
for i, child in enumerate(children):
if child.new or not child.is_collapsed:
break
else:
i = -1
# in flat view replace collapsed chain with MoreMessages
add_child_listing(parent)
parent = Wrapped(MoreMessages(parent, parent.child))
children = children[i:]
for child in sorted(children, key=lambda child: child._id):
# iterate from the root outwards so we can check the depth
if self.threaded:
try:
child_parent = wrapped[child.parent_id]
except KeyError:
# the stored comment tree was missing this message's
# parent, treat it as a top level reply
child_parent = parent
else:
# for flat view all messages are decendants of the
# parent message
child_parent = parent
parent_depth = depth[child_parent._id]
child_depth = parent_depth + 1
depth[child._id] = child_depth
if child_depth == MAX_RECURSION:
# current message is at maximum depth level, all its
# children will be displayed as children of its parent
substitute_parents[child._id] = child_parent._id
if child_depth > MAX_RECURSION:
child_parent_id = substitute_parents[child.parent_id]
substitute_parents[child._id] = child_parent_id
child_parent = wrapped[child_parent_id]
if not hasattr(child_parent, "child"):
add_child_listing(child_parent)
child.is_child = True
child_parent.child.things.append(child)
for child in children:
# look over the children again to decide whether they can be
# collapsed
child.threaded = self.threaded
child.collapsed = self.should_collapse(child)
if self.threaded and children:
most_recent_child_id = max(child._id for child in children)
most_recent_child = wrapped[most_recent_child_id]
most_recent_child.most_recent = True
parent.is_parent = True
parent.threaded = self.threaded
parent.collapsed = self.should_collapse(parent)
final.append(parent)
#.........这里部分代码省略.........