Refactor profile views condition to deduplicate.

master
Snakes 2022-08-15 05:32:29 -04:00
parent e301fb458f
commit 86bea72484
Signed by: Snakes
GPG Key ID: E745A82778055C7E
2 changed files with 13 additions and 2 deletions

View File

@ -774,3 +774,14 @@ class User(Base):
@lazy
def can_create_hole(self):
return self.admin_level >= PERMS['HOLE_CREATE']
@property
@lazy
def viewers_recorded(self):
if SITE_NAME == 'WPD': # WPD gets profile views
return True
elif self.admin_level >= 2: # Admins get profile views
return True
elif self.patron: # Patrons get profile views as a perk
return True
return False

View File

@ -887,7 +887,7 @@ def following(username, v):
@app.get("/views")
@auth_required
def visitors(v):
if v.admin_level < 2 and (not v.patron and SITE_NAME != 'WPD'):
if not v.viewers_recorded:
return render_template("errors/patron.html", v=v)
viewers=sorted(v.viewers, key = lambda x: x.last_view_utc, reverse=True)
return render_template("viewers.html", v=v, viewers=viewers)
@ -925,7 +925,7 @@ def u_username(username, v=None):
if u.shadowbanned and not (v and v.admin_level >= 2) and not (v and v.id == u.id):
abort(404)
if v and v.id not in (u.id, DAD_ID) and (u.patron or u.admin_level > 1):
if v and v.id not in (u.id, DAD_ID) and u.viewers_recorded:
view = g.db.query(ViewerRelationship).filter_by(viewer_id=v.id, user_id=u.id).one_or_none()
if view: view.last_view_utc = int(time.time())