diff --git a/files/classes/user.py b/files/classes/user.py index 146ca42a4..cd3ae5ac2 100644 --- a/files/classes/user.py +++ b/files/classes/user.py @@ -14,6 +14,7 @@ from .badges import * from .clients import * from .mod_logs import * from .mod import * +from .sub_block import * from files.__main__ import Base, cache from files.helpers.security import * import random @@ -154,6 +155,15 @@ class User(Base): def mods(self, sub): return self.id == AEVANN_ID or g.db.query(Mod.user_id).filter_by(user_id=self.id, sub=sub).one_or_none() + @property + @lazy + def all_blocks(self): + return tuple(x[0] for x in g.db.query(SubBlock.sub).filter_by(user_id=self.id).all()) + + @lazy + def blocks(self, sub): + return g.db.query(SubBlock).filter_by(user_id=self.id, sub=sub).one_or_none() + @lazy def mod_date(self, sub): if self.id == AEVANN_ID: return 1 diff --git a/files/routes/admin.py b/files/routes/admin.py index d501d6ca8..63c56c64e 100644 --- a/files/routes/admin.py +++ b/files/routes/admin.py @@ -305,38 +305,38 @@ def monthly(v): return {"message": "Monthly coins granted"} -@app.get('/admin/sidebar') -@admin_level_required(3) -def get_sidebar(v): +# @app.get('/admin/sidebar') +# @admin_level_required(3) +# def get_sidebar(v): - try: - with open(f'files/templates/sidebar_{SITE_NAME}.html', 'r', encoding="utf-8") as f: sidebar = f.read() - except: - sidebar = None +# try: +# with open(f'files/templates/sidebar_{SITE_NAME}.html', 'r', encoding="utf-8") as f: sidebar = f.read() +# except: +# sidebar = None - return render_template('admin/sidebar.html', v=v, sidebar=sidebar) +# return render_template('admin/sidebar.html', v=v, sidebar=sidebar) -@app.post('/admin/sidebar') -@limiter.limit("1/second;30/minute;200/hour;1000/day") -@admin_level_required(3) -def post_sidebar(v): +# @app.post('/admin/sidebar') +# @limiter.limit("1/second;30/minute;200/hour;1000/day") +# @admin_level_required(3) +# def post_sidebar(v): - text = request.values.get('sidebar', '').strip() +# text = request.values.get('sidebar', '').strip() - with open(f'files/templates/sidebar_{SITE_NAME}.html', 'w+', encoding="utf-8") as f: f.write(text) +# with open(f'files/templates/sidebar_{SITE_NAME}.html', 'w+', encoding="utf-8") as f: f.write(text) - with open(f'files/templates/sidebar_{SITE_NAME}.html', 'r', encoding="utf-8") as f: sidebar = f.read() +# with open(f'files/templates/sidebar_{SITE_NAME}.html', 'r', encoding="utf-8") as f: sidebar = f.read() - ma = ModAction( - kind="change_sidebar", - user_id=v.id, - ) - g.db.add(ma) +# ma = ModAction( +# kind="change_sidebar", +# user_id=v.id, +# ) +# g.db.add(ma) - g.db.commit() +# g.db.commit() - return render_template('admin/sidebar.html', v=v, sidebar=sidebar, msg='Sidebar edited successfully!') +# return render_template('admin/sidebar.html', v=v, sidebar=sidebar, msg='Sidebar edited successfully!') @app.get("/admin/shadowbanned") @auth_required diff --git a/files/routes/front.py b/files/routes/front.py index 09be227cd..2db575833 100644 --- a/files/routes/front.py +++ b/files/routes/front.py @@ -269,7 +269,9 @@ def frontlist(v=None, sort="hot", page=1, t="all", ids_only=True, ccmode="false" if sub: posts = posts.filter_by(sub=sub.name) elif SITE_NAME == '2Much4You': posts = posts.filter(Submission.sub.in_(toomuch_subs)) - elif SITE_NAME == 'Ruqqus': posts = posts.filter(Submission.sub != None) + elif SITE_NAME == 'Ruqqus': + posts = posts.filter(Submission.sub != None) + if v and v.all_blocks: posts = posts.filter(Submission.sub.notin_(v.all_blocks)) else: posts = posts.filter_by(sub=None) if gt: posts = posts.filter(Submission.created_utc > gt) diff --git a/files/routes/subs.py b/files/routes/subs.py index baac36135..ddb290c2d 100644 --- a/files/routes/subs.py +++ b/files/routes/subs.py @@ -6,6 +6,43 @@ from .front import frontlist valid_sub_regex = re.compile("^[a-zA-Z0-9_\-]{3,20}$") + +@app.post("/s//block") +@auth_required +def block_sub(v, sub): + sub = g.db.query(Sub).filter_by(name=sub.strip().lower()).one_or_none() + if not sub: abort(404) + sub = sub.name + + # if v.mods(sub): return {"error": "You can't block subs you mod!"} + + existing = g.db.query(SubBlock).filter_by(user_id=v.id, sub=sub).one_or_none() + + if not existing: + block = SubBlock(user_id=v.id, sub=sub) + g.db.add(block) + g.db.commit() + cache.delete_memoized(frontlist) + + return {"message": "Sub blocked successfully!"} + + +@app.post("/s//unblock") +@auth_required +def unblock_sub(v, sub): + sub = g.db.query(Sub).filter_by(name=sub.strip().lower()).one_or_none() + if not sub: abort(404) + sub = sub.name + + block = g.db.query(SubBlock).filter_by(user_id=v.id, sub=sub).one_or_none() + + if block: + g.db.delete(block) + g.db.commit() + cache.delete_memoized(frontlist) + + return {"message": "Sub unblocked successfully!"} + @app.get("/s//mods") @is_not_permabanned def mods(v, sub): diff --git a/files/templates/sidebar_2Much4You.html b/files/templates/sidebar_2Much4You.html index 7e0d837d2..7b5c51511 100644 --- a/files/templates/sidebar_2Much4You.html +++ b/files/templates/sidebar_2Much4You.html @@ -2,12 +2,11 @@ {% if sub %} {% set image=sub.sidebar_url %} {% else %} - {% set image='/static/assets/images/2Much4You/sidebar.webp?a=1040' %} + {% set image='/static/assets/images/{{SITE_NAME}}/sidebar.webp?a=1040' %} {% endif %} sidebar image - {% if sub %} {% if sub.sidebar_html %}
{{sub.sidebar_html|safe}}
@@ -16,6 +15,10 @@ {% if v and v.mods(sub.name) %} SUB SETTINGS {% endif %} + {% if v %} + BLOCK SUB + UNBLOCK SUB + {% endif %} {% else %}

Rules: No doxxing, No CP or other clearly illegal shit. Thanks!

{% endif %} diff --git a/files/templates/sidebar_Ruqqu.html b/files/templates/sidebar_Ruqqu.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/files/templates/sidebar_Ruqqus.html b/files/templates/sidebar_Ruqqus.html index 95dab6a15..da729c9f5 100644 --- a/files/templates/sidebar_Ruqqus.html +++ b/files/templates/sidebar_Ruqqus.html @@ -2,7 +2,7 @@ {% if sub %} {% set image=sub.sidebar_url %} {% else %} - {% set image='/static/assets/images/Ruqqus/sidebar.webp?a=1040' %} + {% set image='/static/assets/images/{{SITE_NAME}}/sidebar.webp?a=1040' %} {% endif %} sidebar image @@ -15,6 +15,10 @@ {% if v and v.mods(sub.name) %} SUB SETTINGS {% endif %} + {% if v %} + BLOCK SUB + UNBLOCK SUB + {% endif %} {% else %}

Rules: No doxxing, No CP or other clearly illegal shit. Also no nazis, go to communities.win. Thanks!

{% endif %}