Eager load GET /comments ("All Comments")
Before vs after: GET /comments |----------|--------|--------|--------|--------|--------|------------| | Database | SELECT | INSERT | UPDATE | DELETE | Totals | Duplicates | |----------|--------|--------|--------|--------|--------|------------| | default | 167 | 0 | 0 | 0 | 167 | 154 | |----------|--------|--------|--------|--------|--------|------------| GET /comments |----------|--------|--------|--------|--------|--------|------------| | Database | SELECT | INSERT | UPDATE | DELETE | Totals | Duplicates | |----------|--------|--------|--------|--------|--------|------------| | default | 13 | 0 | 0 | 0 | 13 | 0 | |----------|--------|--------|--------|--------|--------|------------|
This commit is contained in:
parent
4f8cce1093
commit
9ade35d22f
2 changed files with 27 additions and 19 deletions
|
@ -1,9 +1,13 @@
|
|||
from sqlalchemy.orm import Query
|
||||
|
||||
from files.helpers.wrappers import *
|
||||
from files.helpers.get import *
|
||||
from files.helpers.strings import sql_ilike_clean
|
||||
from files.__main__ import app, cache, limiter
|
||||
from files.classes.submission import Submission
|
||||
from files.helpers.contentsorting import apply_time_filter, sort_objects
|
||||
from files.helpers.comments import comment_filter_moderated
|
||||
from files.helpers.contentsorting import \
|
||||
apply_time_filter, sort_objects, sort_comment_results
|
||||
|
||||
defaulttimefilter = environ.get("DEFAULT_TIME_FILTER", "all").strip()
|
||||
|
||||
|
@ -384,27 +388,31 @@ def random_user(v):
|
|||
@app.get("/comments")
|
||||
@auth_required
|
||||
def all_comments(v):
|
||||
try: page = max(int(request.values.get("page", 1)), 1)
|
||||
except: page = 1
|
||||
|
||||
sort=request.values.get("sort", "new")
|
||||
t=request.values.get("t", defaulttimefilter)
|
||||
|
||||
try: gt=int(request.values.get("after", 0))
|
||||
except: gt=0
|
||||
|
||||
try: lt=int(request.values.get("before", 0))
|
||||
except: lt=0
|
||||
|
||||
idlist = get_comments_idlist(v=v, page=page, sort=sort, t=t, gt=gt, lt=lt)
|
||||
comments = get_comments(idlist, v=v)
|
||||
page = max(request.values.get("page", 1, int), 1)
|
||||
sort = request.values.get("sort", "new")
|
||||
time_filter = request.values.get("t", defaulttimefilter)
|
||||
time_gt = request.values.get("after", 0, int)
|
||||
time_lt = request.values.get("before", 0, int)
|
||||
|
||||
idlist = get_comments_idlist(v=v,
|
||||
page=page, sort=sort, t=time_filter, gt=time_gt, lt=time_lt)
|
||||
next_exists = len(idlist) > 25
|
||||
|
||||
idlist = idlist[:25]
|
||||
|
||||
if request.headers.get("Authorization"): return {"data": [x.json for x in comments]}
|
||||
return render_template("home_comments.html", v=v, sort=sort, t=t, page=page, comments=comments, standalone=True, next_exists=next_exists)
|
||||
def comment_tree_filter(q: Query) -> Query:
|
||||
q = q.filter(Comment.id.in_(idlist))
|
||||
q = comment_filter_moderated(q, v)
|
||||
q = q.options(selectinload(Comment.post)) # used for post titles
|
||||
return q
|
||||
|
||||
comments, _ = get_comment_trees_eager(comment_tree_filter, sort=sort, v=v)
|
||||
comments = sort_comment_results(comments, sort=sort)
|
||||
|
||||
if request.headers.get("Authorization"):
|
||||
return {"data": [x.json for x in comments]}
|
||||
return render_template("home_comments.html", v=v,
|
||||
sort=sort, t=time_filter, page=page, next_exists=next_exists,
|
||||
comments=comments, standalone=True)
|
||||
|
||||
|
||||
def get_comments_idlist(page=1, v=None, sort="new", t="all", gt=0, lt=0):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue