diff --git a/files/classes/user.py b/files/classes/user.py index b263c52b1..e49290e61 100644 --- a/files/classes/user.py +++ b/files/classes/user.py @@ -106,6 +106,7 @@ class User(Base): shadowbanned = Column(Integer, ForeignKey("users.id")) chudded_by = Column(Integer, ForeignKey("users.id")) over_18 = Column(Boolean, default=False) + hidevotedon = Column(Boolean, default=False) slurreplacer = Column(Integer, default=1) profanityreplacer = Column(Integer, default=1) flairchanged = Column(Integer) diff --git a/files/routes/front.py b/files/routes/front.py index 615122f18..5f47855d2 100644 --- a/files/routes/front.py +++ b/files/routes/front.py @@ -66,6 +66,7 @@ def front_all(v, sub=None, subdomain=None): posts = get_posts(ids, v=v, eager=True) if v: + if v.hidevotedon: posts = [x for x in posts if not hasattr(x, 'voted') or not x.voted] award_timers(v) if v and v.client: return {"data": [x.json for x in posts], "next_exists": next_exists} @@ -78,6 +79,11 @@ LIMITED_WPD_HOLES = ('gore', 'aftermath', 'selfharm', 'meta', 'discussion', 'soc def frontlist(v=None, sort="hot", page=1, t="all", ids_only=True, filter_words='', gt=0, lt=0, sub=None, site=None, pins=True, holes=True): posts = db.query(Submission) + if v and v.hidevotedon: + posts = posts.outerjoin(Vote, + and_(Vote.submission_id == Submission.id, Vote.user_id == v.id) + ).filter(Vote.submission_id == None) + if sub: posts = posts.filter(Submission.sub == sub.name) elif v: posts = posts.filter(or_(Submission.sub == None, Submission.sub.notin_(v.all_blocks))) diff --git a/files/routes/settings.py b/files/routes/settings.py index 831a32fa1..e9ee4e4d0 100644 --- a/files/routes/settings.py +++ b/files/routes/settings.py @@ -183,6 +183,7 @@ def settings_personal_post(v): db.add(v) return profanity_filter_updated + updated = updated or update_flag("hidevotedon", "hidevotedon") updated = updated or update_flag("newtab", "newtab") updated = updated or update_flag("newtabexternal", "newtabexternal") updated = updated or update_flag("nitter", "nitter") diff --git a/schema.sql b/schema.sql index a51a2d05e..1e3c01a93 100644 --- a/schema.sql +++ b/schema.sql @@ -984,6 +984,7 @@ CREATE TABLE public.users ( titlecolor character varying(6) NOT NULL, profileurl character varying(65), bannerurl character varying(65), + hidevotedon boolean DEFAULT false NOT NULL, newtab boolean DEFAULT false NOT NULL, flairchanged integer, defaultsortingcomments character varying(15) NOT NULL, @@ -2879,3 +2880,4 @@ ALTER TABLE ONLY public.comments -- -- PostgreSQL database dump complete -- +