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.wrappers import *
|
||||||
from files.helpers.get import *
|
from files.helpers.get import *
|
||||||
from files.helpers.strings import sql_ilike_clean
|
from files.helpers.strings import sql_ilike_clean
|
||||||
from files.__main__ import app, cache, limiter
|
from files.__main__ import app, cache, limiter
|
||||||
from files.classes.submission import Submission
|
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()
|
defaulttimefilter = environ.get("DEFAULT_TIME_FILTER", "all").strip()
|
||||||
|
|
||||||
|
@ -384,27 +388,31 @@ def random_user(v):
|
||||||
@app.get("/comments")
|
@app.get("/comments")
|
||||||
@auth_required
|
@auth_required
|
||||||
def all_comments(v):
|
def all_comments(v):
|
||||||
try: page = max(int(request.values.get("page", 1)), 1)
|
page = max(request.values.get("page", 1, int), 1)
|
||||||
except: page = 1
|
|
||||||
|
|
||||||
sort = request.values.get("sort", "new")
|
sort = request.values.get("sort", "new")
|
||||||
t=request.values.get("t", defaulttimefilter)
|
time_filter = request.values.get("t", defaulttimefilter)
|
||||||
|
time_gt = request.values.get("after", 0, int)
|
||||||
try: gt=int(request.values.get("after", 0))
|
time_lt = request.values.get("before", 0, int)
|
||||||
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)
|
|
||||||
|
|
||||||
|
idlist = get_comments_idlist(v=v,
|
||||||
|
page=page, sort=sort, t=time_filter, gt=time_gt, lt=time_lt)
|
||||||
next_exists = len(idlist) > 25
|
next_exists = len(idlist) > 25
|
||||||
|
|
||||||
idlist = idlist[:25]
|
idlist = idlist[:25]
|
||||||
|
|
||||||
if request.headers.get("Authorization"): return {"data": [x.json for x in comments]}
|
def comment_tree_filter(q: Query) -> Query:
|
||||||
return render_template("home_comments.html", v=v, sort=sort, t=t, page=page, comments=comments, standalone=True, next_exists=next_exists)
|
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):
|
def get_comments_idlist(page=1, v=None, sort="new", t="all", gt=0, lt=0):
|
||||||
|
|
|
@ -152,7 +152,7 @@
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if c.parent_comment and c.parent_comment.sentto %}
|
{% if not standalone and c.parent_comment and c.parent_comment.sentto %}
|
||||||
{% set isreply = True %}
|
{% set isreply = True %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% set isreply = False %}
|
{% set isreply = False %}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue