mirror of
https://git.wownero.com/lza_menace/suchwow.git
synced 2024-08-15 01:03:19 +00:00
move user ban functionality to the database instead of config
This commit is contained in:
parent
6ef47009b8
commit
226e7bbe15
4 changed files with 53 additions and 11 deletions
|
@ -9,7 +9,7 @@ from flask import Flask, request, session, redirect
|
|||
from flask import render_template, flash, url_for
|
||||
from flask_session import Session
|
||||
from suchwow import config
|
||||
from suchwow.models import Post, Profile, Comment, Notification, db, Moderator
|
||||
from suchwow.models import Post, Profile, Comment, Notification, db, Moderator, Ban
|
||||
from suchwow.routes import auth, comment, post, profile, leaderboard, api
|
||||
from suchwow.utils.decorators import login_required, moderator_required
|
||||
from suchwow.utils.helpers import post_webhook, get_latest_tipped_posts
|
||||
|
@ -85,7 +85,7 @@ def init():
|
|||
makedirs(f"{config.DATA_FOLDER}/{i}", exist_ok=True)
|
||||
|
||||
# init db
|
||||
db.create_tables([Post, Profile, Comment, Notification, Moderator])
|
||||
db.create_tables([Post, Profile, Comment, Notification, Moderator, Ban])
|
||||
|
||||
@app.cli.command("post_reddit")
|
||||
@click.argument('last_hours')
|
||||
|
@ -153,6 +153,40 @@ def remove_admin(username):
|
|||
else:
|
||||
print("That moderator doesn't exist")
|
||||
|
||||
@app.cli.command("ban_user")
|
||||
@click.argument("username")
|
||||
@click.argument("reason", nargs=-1)
|
||||
def ban_user(username, reason):
|
||||
u = Profile.filter(username=username).first()
|
||||
b = Ban.filter(user=u).first()
|
||||
if b:
|
||||
print("User already banned")
|
||||
return False
|
||||
if u:
|
||||
b = Ban(user=u, reason=' '.join(reason))
|
||||
b.save()
|
||||
print(f"Banned {username}")
|
||||
return
|
||||
else:
|
||||
print("That user doesn't exist")
|
||||
return
|
||||
|
||||
@app.cli.command("unban_user")
|
||||
@click.argument("username")
|
||||
def ban_user(username):
|
||||
u = Profile.filter(username=username).first()
|
||||
if not u:
|
||||
print("That user doesn't exist")
|
||||
return False
|
||||
b = Ban.filter(user=u).first()
|
||||
if b:
|
||||
b.delete_instance()
|
||||
print(f"Unbanned {username}")
|
||||
return True
|
||||
else:
|
||||
print("That user isn't banned")
|
||||
return False
|
||||
|
||||
@app.cli.command("show")
|
||||
@click.argument("post_id")
|
||||
def post_id(post_id):
|
||||
|
|
|
@ -21,9 +21,6 @@ WALLET_RPC_USER = getenv('WALLET_RPC_USER', 'suchwow') #
|
|||
WALLET_RPC_PASS = getenv('WALLET_RPC_PASS', 'suchwow') #
|
||||
WALLET_PASS = getenv('WALLET_PASS', 'zzzzzzz') # You specify all these wallet details in .env
|
||||
|
||||
# Optional for banning users who post crazy shit (they do)
|
||||
BANNED_USERS = {'username': 'reason for the ban'}
|
||||
|
||||
# Optional for posting to Reddit
|
||||
PRAW_CLIENT_SECRET = getenv('PRAW_CLIENT_SECRET', None)
|
||||
PRAW_CLIENT_ID = getenv('PRAW_CLIENT_ID', None)
|
||||
|
|
|
@ -123,3 +123,12 @@ class Notification(Model):
|
|||
|
||||
class Meta:
|
||||
database = db
|
||||
|
||||
class Ban(Model):
|
||||
id = AutoField()
|
||||
user = ForeignKeyField(Profile)
|
||||
reason = TextField()
|
||||
timestamp = DateTimeField(default=datetime.now)
|
||||
|
||||
class Meta:
|
||||
database = db
|
||||
|
|
|
@ -9,7 +9,7 @@ from werkzeug.utils import secure_filename
|
|||
from secrets import token_urlsafe
|
||||
from suchwow import wownero
|
||||
from suchwow import config
|
||||
from suchwow.models import Post, Comment
|
||||
from suchwow.models import Post, Profile, Comment, Ban
|
||||
from suchwow.utils.decorators import login_required, profile_required, moderator_required
|
||||
from suchwow.utils.helpers import allowed_file, is_moderator, get_session_user
|
||||
from suchwow.utils.helpers import rw_cache, post_webhook
|
||||
|
@ -54,12 +54,14 @@ def read(id):
|
|||
@login_required
|
||||
@profile_required
|
||||
def create():
|
||||
submitter = get_session_user()
|
||||
u = Profile.filter(username=submitter)
|
||||
banned = Ban.filter(user=u).first()
|
||||
print(banned)
|
||||
if banned:
|
||||
flash(f"You can't post: {banned.reason}", "is-danger")
|
||||
return redirect("/")
|
||||
if request.method == "POST":
|
||||
submitter = get_session_user()
|
||||
if submitter in config.BANNED_USERS:
|
||||
reason = config.BANNED_USERS[submitter]
|
||||
flash(f"You can't post for now: {reason}", "is-danger")
|
||||
return redirect("/")
|
||||
post_title = request.form.get("title")
|
||||
# check if the post request has the file part
|
||||
if "file" not in request.files:
|
||||
|
|
Loading…
Reference in a new issue