forked from MarseyWorld/MarseyWorld
move get_saves_and_subscribes to their own thing
parent
f0c8af3ec7
commit
4ded76741d
|
@ -959,77 +959,47 @@ def user_profile_name(username):
|
||||||
x = get_user(username)
|
x = get_user(username)
|
||||||
return redirect(x.profile_url)
|
return redirect(x.profile_url)
|
||||||
|
|
||||||
|
def get_saves_and_subscribes(v, template, relationship_cls, page:int, standalone=False):
|
||||||
|
PAGE_SIZE = 25
|
||||||
|
if relationship_cls in (SaveRelationship, Subscription):
|
||||||
|
query = relationship_cls.submission_id
|
||||||
|
join = relationship_cls.post
|
||||||
|
cls = Submission
|
||||||
|
elif relationship_cls in (CommentSaveRelationship):
|
||||||
|
query = relationship_cls.comment_id
|
||||||
|
join = relationship_cls.comment
|
||||||
|
cls = Comment
|
||||||
|
else:
|
||||||
|
raise TypeError("Relationships supported is SaveRelationship, Subscription, CommentSaveRelationship")
|
||||||
|
ids = [x[0] for x in g.db.query(query).join(join).filter(relationship_cls.user_id == v.id).order_by(cls.created_utc.desc()).offset(PAGE_SIZE * (page - 1)).limit(PAGE_SIZE + 1).all()]
|
||||||
|
next_exists = len(ids) > PAGE_SIZE
|
||||||
|
ids = ids[:PAGE_SIZE]
|
||||||
|
if cls is Submission:
|
||||||
|
listing = get_posts(ids, v=v)
|
||||||
|
elif cls is Comment:
|
||||||
|
listing = get_comments(ids, v=v)
|
||||||
|
else:
|
||||||
|
raise TypeError("Only supports Submissions and Comments. This is probably the result of a bug with *this* function")
|
||||||
|
if v.client: return {"data": [x.json for x in listing]}
|
||||||
|
return render_template(template, u=v, v=v, listing=listing, page=page, next_exists=next_exists, standalone=standalone)
|
||||||
|
|
||||||
@app.get("/@<username>/saved/posts")
|
@app.get("/@<username>/saved/posts")
|
||||||
@auth_required
|
@auth_required
|
||||||
def saved_posts(v, username):
|
def saved_posts(v, username):
|
||||||
|
page = max(1, int(request.values.get("page", 1)))
|
||||||
page=int(request.values.get("page",1))
|
return get_saves_and_subscribes(v, "userpage.html", SaveRelationship, page, False)
|
||||||
|
|
||||||
ids = [x[0] for x in g.db.query(SaveRelationship.submission_id).join(SaveRelationship.post).filter(SaveRelationship.user_id == v.id).order_by(Submission.created_utc.desc()).offset(25 * (page - 1)).limit(26).all()]
|
|
||||||
|
|
||||||
next_exists=len(ids)>25
|
|
||||||
|
|
||||||
ids=ids[:25]
|
|
||||||
|
|
||||||
listing = get_posts(ids, v=v)
|
|
||||||
|
|
||||||
if v.client: return {"data": [x.json for x in listing]}
|
|
||||||
return render_template("userpage.html",
|
|
||||||
u=v,
|
|
||||||
v=v,
|
|
||||||
listing=listing,
|
|
||||||
page=page,
|
|
||||||
next_exists=next_exists,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/@<username>/saved/comments")
|
@app.get("/@<username>/saved/comments")
|
||||||
@auth_required
|
@auth_required
|
||||||
def saved_comments(v, username):
|
def saved_comments(v, username):
|
||||||
|
page = max(1, int(request.values.get("page", 1)))
|
||||||
page=int(request.values.get("page",1))
|
return get_saves_and_subscribes(v, "userpage_comments.html", CommentSaveRelationship, page, True)
|
||||||
|
|
||||||
ids = [x[0] for x in g.db.query(CommentSaveRelationship.comment_id).join(CommentSaveRelationship.comment).filter(CommentSaveRelationship.user_id == v.id).order_by(Comment.id.desc()).offset(25 * (page - 1)).limit(26).all()]
|
|
||||||
|
|
||||||
next_exists=len(ids) > 25
|
|
||||||
|
|
||||||
ids=ids[:25]
|
|
||||||
|
|
||||||
listing = get_comments(ids, v=v)
|
|
||||||
|
|
||||||
if v.client: return {"data": [x.json for x in listing]}
|
|
||||||
return render_template("userpage_comments.html",
|
|
||||||
u=v,
|
|
||||||
v=v,
|
|
||||||
listing=listing,
|
|
||||||
page=page,
|
|
||||||
next_exists=next_exists,
|
|
||||||
standalone=True)
|
|
||||||
|
|
||||||
@app.get("/@<username>/subscribed/posts")
|
@app.get("/@<username>/subscribed/posts")
|
||||||
@auth_required
|
@auth_required
|
||||||
def subscribed_posts(v, username):
|
def subscribed_posts(v, username):
|
||||||
|
page = max(1, int(request.values.get("page", 1)))
|
||||||
page=int(request.values.get("page",1))
|
return get_saves_and_subscribes(v, "userpage.html", Subscription, page, False)
|
||||||
|
|
||||||
ids = [x[0] for x in g.db.query(Subscription.submission_id).join(Subscription.post).filter(Subscription.user_id == v.id).order_by(Submission.created_utc.desc()).offset(25 * (page - 1)).limit(26).all()]
|
|
||||||
|
|
||||||
next_exists=len(ids)>25
|
|
||||||
|
|
||||||
ids=ids[:25]
|
|
||||||
|
|
||||||
listing = get_posts(ids, v=v)
|
|
||||||
|
|
||||||
if v.client: return {"data": [x.json for x in listing]}
|
|
||||||
return render_template("userpage.html",
|
|
||||||
u=v,
|
|
||||||
v=v,
|
|
||||||
listing=listing,
|
|
||||||
page=page,
|
|
||||||
next_exists=next_exists,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@app.post("/fp/<fp>")
|
@app.post("/fp/<fp>")
|
||||||
@auth_required
|
@auth_required
|
||||||
|
|
Loading…
Reference in New Issue