Pins: fix infinite recursion

This commit is contained in:
justcool393 2023-02-16 18:46:43 -06:00
parent d728a16a19
commit 31f273ca32
2 changed files with 5 additions and 6 deletions

View file

@ -65,7 +65,7 @@ def sort_objects(objects: Query, sort: str, cls):
# Presently designed around files.helpers.get.get_comment_trees_eager # Presently designed around files.helpers.get.get_comment_trees_eager
# Behavior should parallel that of sort_objects above. TODO: Unify someday? # Behavior should parallel that of sort_objects above. TODO: Unify someday?
def sort_comment_results(comments: Iterable[Comment], sort:str, **kwargs): def sort_comment_results(comments: Iterable[Comment], sort:str, *, pins:bool=False):
""" """
Sorts comments results from `files.helpers.get.get_comments_trees_eager` Sorts comments results from `files.helpers.get.get_comments_trees_eager`
:param comments: Comments to sort :param comments: Comments to sort
@ -98,8 +98,7 @@ def sort_comment_results(comments: Iterable[Comment], sort:str, **kwargs):
else: # default, or sort == 'new' else: # default, or sort == 'new'
key_func = lambda c: -c.created_utc key_func = lambda c: -c.created_utc
if kwargs.get('pins', True): key_func_pinned = lambda c: (
key_func = lambda c: (
(c.is_pinned is None, c.is_pinned == '', c.is_pinned), # sort None last (c.is_pinned is None, c.is_pinned == '', c.is_pinned), # sort None last
key_func(c)) key_func(c))
return sorted(comments, key=key_func) return sorted(comments, key=key_func_pinned if pins else key_func)

View file

@ -279,7 +279,7 @@ def get_comments(
def get_comment_trees_eager( def get_comment_trees_eager(
query_filter_callable: Callable[[Query], Query], query_filter_callable: Callable[[Query], Query],
sort: str="old", sort: str="old",
v: Optional[User]=None) -> List[Comment]: v: Optional[User]=None) -> tuple[list[Comment], defaultdict[Comment, list[Comment]]]:
if v: if v:
votes = g.db.query(CommentVote).filter_by(user_id=v.id).subquery() votes = g.db.query(CommentVote).filter_by(user_id=v.id).subquery()
@ -336,7 +336,7 @@ def get_comment_trees_eager(
for parent_id in comments_map_parent: for parent_id in comments_map_parent:
comments_map_parent[parent_id] = sort_comment_results( comments_map_parent[parent_id] = sort_comment_results(
comments_map_parent[parent_id], sort) comments_map_parent[parent_id], sort, pins=True)
if parent_id in comments_map: if parent_id in comments_map:
comments_map[parent_id].replies2 = comments_map_parent[parent_id] comments_map[parent_id].replies2 = comments_map_parent[parent_id]