diff --git a/files/classes/mod_logs.py b/files/classes/mod_logs.py index e2ec233f6..04c312f70 100644 --- a/files/classes/mod_logs.py +++ b/files/classes/mod_logs.py @@ -153,6 +153,11 @@ ACTIONTYPES={ "icon": "fa-balance-scale", "color": "bg-muted", }, + "change_sidebar": { + "str": "changed the sidebar", + "icon": "fa-columns", + "color": "bg-muted", + }, "ban_user":{ "str":'banned user {self.target_link}', "icon":"fa-user-slash", @@ -291,6 +296,11 @@ ACTIONTYPES2={ "icon": "fa-balance-scale", "color": "bg-muted", }, + "change_sidebar": { + "str": "changed the sidebar", + "icon": "fa-columns", + "color": "bg-muted", + }, "ban_user":{ "str":'banned user {self.target_link}', "icon":"fa-user-slash", diff --git a/files/classes/submission.py b/files/classes/submission.py index 5b2dea18a..7f88a0e52 100644 --- a/files/classes/submission.py +++ b/files/classes/submission.py @@ -213,6 +213,7 @@ class Submission(Base): @property @lazy def domain(self): + if not self.url: return None if self.url.startswith('/'): return site domain = urlparse(self.url).netloc if domain.startswith("www."): domain = domain.split("www.")[1] diff --git a/files/helpers/markdown.py b/files/helpers/markdown.py index aead81860..7ce47e8fc 100644 --- a/files/helpers/markdown.py +++ b/files/helpers/markdown.py @@ -118,8 +118,28 @@ class Renderer(HTMLRenderer): class Renderer2(HTMLRenderer): def __init__(self, **kwargs): - super().__init__(UserMention2) + super().__init__(UserMention2, + UserMention, + SubMention, + RedditorMention, + SubMention2, + RedditorMention2) for i in kwargs: self.__dict__[i] = kwargs[i] + def render_user_mention2(self, token): + return f'@{token.target}' + def render_user_mention(self, token): - return f'@{token.target}' \ No newline at end of file + space = token.target[0] + target = token.target[1] + return f"{space}@{target}" + + def render_sub_mention(self, token): + space = token.target[0] + target = token.target[1] + return f"{space}r/{target}" + + def render_redditor_mention(self, token): + space = token.target[0] + target = token.target[1] + return f"{space}u/{target}" \ No newline at end of file diff --git a/files/routes/admin.py b/files/routes/admin.py index d167991ec..80dc28bf3 100644 --- a/files/routes/admin.py +++ b/files/routes/admin.py @@ -218,39 +218,39 @@ def monthly(v): return {"message": "Monthly coins granted"} -@app.get('/admin/rules') +@app.get('/admin/sidebar') @admin_level_required(2) -def get_rules(v): +def get_sidebar(v): try: - with open(f'rules_{SITE_NAME}.html', 'r') as f: rules = f.read() + with open(f'files/templates/sidebar_{SITE_NAME}.html', 'r') as f: sidebar = f.read() except Exception: - rules = None + sidebar = None - return render_template('admin/rules.html', v=v, rules=rules) + return render_template('admin/sidebar.html', v=v, sidebar=sidebar) -@app.post('/admin/rules') +@app.post('/admin/sidebar') @limiter.limit("1/second") @admin_level_required(2) @validate_formkey -def post_rules(v): +def post_sidebar(v): - text = request.values.get('rules', '').strip() + text = request.values.get('sidebar', '').strip() - with open(f'rules_{SITE_NAME}.html', 'w+') as f: f.write(text) + with open(f'files/templates/sidebar_{SITE_NAME}.html', 'w+') as f: f.write(text) - with open(f'rules_{SITE_NAME}.html', 'r') as f: rules = f.read() + with open(f'files/templates/sidebar_{SITE_NAME}.html', 'r') as f: sidebar = f.read() ma = ModAction( - kind="change_rules", + kind="change_sidebar", user_id=v.id, ) g.db.add(ma) g.db.commit() - return render_template('admin/rules.html', v=v, rules=rules) + return render_template('admin/sidebar.html', v=v, sidebar=sidebar) @app.get("/admin/shadowbanned") @@ -626,6 +626,8 @@ def admin_removed_comments(v): def agendaposter(user_id, v): user = g.db.query(User).filter_by(id=user_id).first() + if user.username == '911roofer': abort(403) + expiry = request.values.get("days", 0) if expiry: expiry = float(expiry) diff --git a/files/routes/awards.py b/files/routes/awards.py index dce01b509..f4b2fd60d 100644 --- a/files/routes/awards.py +++ b/files/routes/awards.py @@ -259,6 +259,7 @@ def award_post(pid, v): else: post.stickied_utc = t g.db.add(post) elif kind == "agendaposter" and not (author.agendaposter and author.agendaposter_expires_utc == 0): + if author.username == "911roofer": abort(403) if author.agendaposter_expires_utc and time.time() < author.agendaposter_expires_utc: author.agendaposter_expires_utc += 86400 else: author.agendaposter_expires_utc = time.time() + 86400 @@ -435,6 +436,7 @@ def award_comment(cid, v): else: c.is_pinned_utc = t g.db.add(c) elif kind == "agendaposter" and not (author.agendaposter and author.agendaposter_expires_utc == 0): + if author.username == "911roofer": abort(403) if author.agendaposter_expires_utc and time.time() < author.agendaposter_expires_utc: author.agendaposter_expires_utc += 86400 else: author.agendaposter_expires_utc = time.time() + 86400 diff --git a/files/routes/discord.py b/files/routes/discord.py index daa019baa..90757270f 100644 --- a/files/routes/discord.py +++ b/files/routes/discord.py @@ -17,7 +17,7 @@ SITE_NAME = environ.get("SITE_NAME", "").strip() @auth_required def join_discord(v): - if v.is_suspended != 0 and v.admin_level == 0: return {"error": "Banned users cannot join the discord server!"} + if v.is_banned and not v.unban_utc: return {"error": "Permabanned users cannot join the discord server!"} if SITE_NAME == 'Drama' and v.admin_level == 0 and v.patron == 0 and v.truecoins < 150: return f"You must receive 150 upvotes/downvotes from other users before being able to join the Discord server." diff --git a/files/routes/posts.py b/files/routes/posts.py index c69d0da01..9842ca830 100644 --- a/files/routes/posts.py +++ b/files/routes/posts.py @@ -590,10 +590,12 @@ def thumbnail_thread(pid): post = db.query(Submission).filter_by(id=pid).first() - if not post: + if not post or not post.url: time.sleep(5) post = db.query(Submission).filter_by(id=pid).first() + if not post or not post.url: return + fetch_url = post.url if fetch_url.startswith('/'): fetch_url = f"https://{site}{fetch_url}" diff --git a/files/routes/static.py b/files/routes/static.py index f65b93048..3a7f0d386 100644 --- a/files/routes/static.py +++ b/files/routes/static.py @@ -26,20 +26,15 @@ def emojis(v): else: template = 'CHRISTMAS/' return render_template(f"{template}emojis.html", v=v, emojis=emojis) -@app.get('/rules') +@app.get('/sidebar') @auth_desired -def static_rules(v): +def sidebar(v): - if not path.exists(f'rules_{site_name}.html'): - if v and v.admin_level > 1: - return render_template('norules.html', v=v) - else: - abort(404) + if not path.exists(f'files/templates/sidebar_{site_name}.html'): abort(404) - with open(f'rules_{site_name}.html', 'r') as f: - rules = f.read() + with open(f'files/templates/sidebar_{site_name}.html', 'r') as f: sidebar = f.read() - return render_template('rules.html', rules=rules, v=v) + return render_template('sidebar.html', sidebar=sidebar, v=v) @app.get("/stats") diff --git a/files/routes/users.py b/files/routes/users.py index 6fe3bc2c8..58d8e594e 100644 --- a/files/routes/users.py +++ b/files/routes/users.py @@ -741,7 +741,7 @@ def u_username_comments(username, v=None): return render_template(f"{template}userpage_blocked.html", u=u, v=v) - page = int(request.values.get("page", "1")) + page = max(int(request.values.get("page", "1")), 1) sort=request.values.get("sort","new") t=request.values.get("t","all") diff --git a/files/templates/CHRISTMAS/sidebars/HomeSidebar.html b/files/templates/CHRISTMAS/sidebars/HomeSidebar.html index 5a7d285bb..75955a30c 100644 --- a/files/templates/CHRISTMAS/sidebars/HomeSidebar.html +++ b/files/templates/CHRISTMAS/sidebars/HomeSidebar.html @@ -4,59 +4,59 @@ set banner = [ { 'username': 'Bartholomew_1', - 'image': '/static/assets/images/banners/1.webp?a=1' + 'image': '1' }, { 'username': 'Yui', - 'image': '/static/assets/images/banners/2.webp?a=1' + 'image': '2' }, { 'username': 'Bartholomew_1', - 'image': '/static/assets/images/banners/3.webp?a=1' + 'image': '3' }, { 'username': 'chiobu', - 'image': '/static/assets/images/banners/4.webp?a=1' + 'image': '4' }, { 'username': 'chiobu', - 'image': '/static/assets/images/banners/5.webp?a=1' + 'image': '5' }, { 'username': 'geese_suck', - 'image': '/static/assets/images/banners/6.webp?a=1' + 'image': '6' }, { 'username': 'Bartholomew_1', - 'image': '/static/assets/images/banners/7.webp?a=1' + 'image': '7' }, { 'username': 'drama_enthusiast', - 'image': '/static/assets/images/banners/8.webp?a=1' + 'image': '8' }, { 'username': 'dramarama', - 'image': '/static/assets/images/banners/9.webp?a=1' + 'image': '9' }, { 'username': 'geese_suck', - 'image': '/static/assets/images/banners/10.webp?a=1' + 'image': '10' }, { 'username': 'ThreeLetterAgent', - 'image': '/static/assets/images/banners/11.webp?a=1' + 'image': '11' }, { 'username': 'geese_suck', - 'image': '/static/assets/images/banners/12.webp?a=1' + 'image': '12' }, { 'username': 'geese_suck', - 'image': '/static/assets/images/banners/13.webp?a=1' + 'image': '13' }, { 'username': 'geese_suck', - 'image': '/static/assets/images/banners/14.webp?a=1' + 'image': '14' } ] %} @@ -119,7 +119,7 @@
- artwork featuring an orange and white cat + artwork featuring an orange and white cat Artwork by @{{ banner[random].username }} diff --git a/files/templates/admin/admin_home.html b/files/templates/admin/admin_home.html index fd29c2a8c..d48cbbe9a 100644 --- a/files/templates/admin/admin_home.html +++ b/files/templates/admin/admin_home.html @@ -52,7 +52,7 @@

Configuration

diff --git a/files/templates/admin/alt_votes.html b/files/templates/admin/alt_votes.html index 23c84b826..7acaeeb16 100644 --- a/files/templates/admin/alt_votes.html +++ b/files/templates/admin/alt_votes.html @@ -72,7 +72,7 @@

Two accounts controlled by different people should have most uniqueness percentages at or above 70-80%

A sockpuppet account will have its uniqueness percentages significantly lower.

-Link Accounts +Link Accounts
diff --git a/files/templates/admin/app.html b/files/templates/admin/app.html index b09ec5fcd..a55dd8541 100644 --- a/files/templates/admin/app.html +++ b/files/templates/admin/app.html @@ -34,12 +34,12 @@
{% if not app.client_id%} - Approve - Reject + Approve + Reject {% else %} - Revoke + Revoke {% endif %}
diff --git a/files/templates/admin/apps.html b/files/templates/admin/apps.html index 1768944f1..1d645926d 100644 --- a/files/templates/admin/apps.html +++ b/files/templates/admin/apps.html @@ -39,12 +39,12 @@
{% if not app.client_id %} - Approve - Reject + Approve + Reject {% else %} - Revoke + Revoke {% endif %}
diff --git a/files/templates/admin/awards.html b/files/templates/admin/awards.html index 3572928ce..d3fb7b389 100644 --- a/files/templates/admin/awards.html +++ b/files/templates/admin/awards.html @@ -14,7 +14,7 @@ {{error}} - @@ -25,7 +25,7 @@ {{msg}} - @@ -64,6 +64,6 @@

 	{% if 'rdrama.net' not in request.host or v.admin_level > 2 %}
-		
Grant Monthly Marseybux
+
Grant Monthly Marseybux
{% endif %} {% endblock %} \ No newline at end of file diff --git a/files/templates/admin/badge_grant.html b/files/templates/admin/badge_grant.html index 4776fd9a1..98647dd98 100644 --- a/files/templates/admin/badge_grant.html +++ b/files/templates/admin/badge_grant.html @@ -14,7 +14,7 @@ {{error}} - @@ -25,7 +25,7 @@ {{msg}} - diff --git a/files/templates/admin/rules.html b/files/templates/admin/sidebar.html similarity index 53% rename from files/templates/admin/rules.html rename to files/templates/admin/sidebar.html index c5991156f..3ae6e1bb6 100644 --- a/files/templates/admin/rules.html +++ b/files/templates/admin/sidebar.html @@ -1,31 +1,30 @@ -{% extends "default.html" %} - -{% block pagetitle %}Edit {{'SITE_NAME' | app_config}} rules{% endblock %} - -{% block content %} - -
-
-
-
-

Edit rules

-

Your rules page will be publicly visible at {{'/rules'|full_link}}.

-

Supports markdown syntax.

-
-
-
- - - - -
- -
- -
-
-
-
-
- +{% extends "default.html" %} + +{% block pagetitle %}Edit {{'SITE_NAME' | app_config}} sidebar{% endblock %} + +{% block content %} + +
+
+
+
+

Edit sidebar

+
+
+
+
+
+ + + +
+ +
+
+
+
+
+
+
+ {% endblock %} \ No newline at end of file diff --git a/files/templates/authforms.html b/files/templates/authforms.html index 732c4dd43..72c788eb4 100644 --- a/files/templates/authforms.html +++ b/files/templates/authforms.html @@ -48,7 +48,7 @@