From 81fc5a9340b46d0e8a7ebca105fa557cd4e4367b Mon Sep 17 00:00:00 2001 From: fireworks88 Date: Fri, 23 Jul 2021 17:51:26 +0200 Subject: [PATCH] sneed --- drama/routes/users.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/drama/routes/users.py b/drama/routes/users.py index 28d92f2bd..4110feea8 100644 --- a/drama/routes/users.py +++ b/drama/routes/users.py @@ -2,6 +2,7 @@ import qrcode import io from datetime import datetime +from drama.classes.user import ViewerRelationship from drama.helpers.alerts import * from drama.helpers.sanitize import * from drama.helpers.markdown import * @@ -211,6 +212,22 @@ def followers(username, v): users = [x.user for x in u.followers] return render_template("followers.html", v=v, u=u, users=users) +@app.route("/@/views", methods=["GET"]) +@auth_required +def visitors(username, v): + + u = get_user(username, v=v) + + if u.id != v.id: + abort(403) + + if v.admin_level < 1 and not v.patron: + abort(403) + + viewers=sorted(u.viewers, key = lambda x: x.last_view_utc, reverse = True) + + return render_template("viewers.html", v=v, viewers=viewers) + @app.route("/@", methods=["GET"]) @app.route("/api/v1/user//listing", methods=["GET"]) @auth_desired @@ -236,6 +253,23 @@ def u_username(username, v=None): 'api': lambda: {"error": f"That username is reserved for: {u.reserved}"} } + # viewers + if u.id != v.id: + view = g.db.query(ViewerRelationship).filter( + and_( + ViewerRelationship.viewer_id == v.id, + ViewerRelationship.user_id == u.id + ) + ).first() + + if view: + view.last_view_utc = g.timestamp + else: + view = ViewerRelationship(user_id = u.id, + viewer_id = v.id) + + g.db.add(view) + if u.is_deleted and (not v or v.admin_level < 3): return {'html': lambda: render_template("userpage_deleted.html", u=u,