88 lines
3.1 KiB
Python
88 lines
3.1 KiB
Python
from flask import Blueprint, render_template, request, redirect, url_for, flash, session, abort
|
|
from app.models.user_ban import UserBan
|
|
from app.extensions import db, csrf, limiter, redis_controller
|
|
from app.models.user import User
|
|
from app.enums.BanType import BanType
|
|
from app.util import auth
|
|
from datetime import datetime, timedelta
|
|
|
|
NotApprovedRoute = Blueprint('notapproved', __name__, template_folder="pages")
|
|
|
|
BanTypeToText = {
|
|
BanType.Warning: "Warning",
|
|
BanType.Day1Ban: "Banned for 1 day",
|
|
BanType.Day3Ban: "Banned for 3 days",
|
|
BanType.Day7Ban: "Banned for 7 days",
|
|
BanType.Day14Ban: "Banned for 14 days",
|
|
BanType.Day30Ban: "Banned for 30 days",
|
|
BanType.Deleted: "Account Deleted",
|
|
}
|
|
|
|
@NotApprovedRoute.route("/not-approved", methods=["GET"])
|
|
def not_approved():
|
|
CurrentUser : User = auth.GetCurrentUser()
|
|
if CurrentUser is not None:
|
|
return redirect("/")
|
|
|
|
if "not-approved-viewer" not in session:
|
|
abort(404)
|
|
|
|
UserObj : User = User.query.filter_by(id=session["not-approved-viewer"]).first()
|
|
if UserObj is None:
|
|
del session["not-approved-viewer"]
|
|
abort(404)
|
|
|
|
if UserObj.accountstatus == 4:
|
|
del session["not-approved-viewer"]
|
|
return redirect("/")
|
|
|
|
if UserObj.accountstatus == 1:
|
|
del session["not-approved-viewer"]
|
|
return redirect("/")
|
|
|
|
LatestUserBanObj : UserBan = UserBan.query.filter_by(userid=UserObj.id, acknowledged = False).order_by(UserBan.id.desc()).first()
|
|
if LatestUserBanObj is None:
|
|
del session["not-approved-viewer"]
|
|
UserObj.accountstatus = 1
|
|
db.session.commit()
|
|
return redirect("/")
|
|
hasBanExpired = False
|
|
if LatestUserBanObj.expires_at is not None:
|
|
if LatestUserBanObj.expires_at < datetime.utcnow():
|
|
hasBanExpired = True
|
|
|
|
return render_template("notapproved/banpage.html", user=UserObj,
|
|
userban=LatestUserBanObj,
|
|
banText=BanTypeToText[LatestUserBanObj.ban_type],
|
|
hasBanExpired=hasBanExpired)
|
|
|
|
@NotApprovedRoute.route("/not-approved", methods=["POST"])
|
|
def not_approved_post():
|
|
CurrentUser : User = auth.GetCurrentUser()
|
|
if CurrentUser is not None:
|
|
return redirect("/")
|
|
if "not-approved-viewer" not in session:
|
|
abort(404)
|
|
|
|
UserObj : User = User.query.filter_by(id=session["not-approved-viewer"]).first()
|
|
if UserObj is None:
|
|
del session["not-approved-viewer"]
|
|
abort(404)
|
|
|
|
if UserObj.accountstatus == 1:
|
|
del session["not-approved-viewer"]
|
|
return redirect("/")
|
|
|
|
LatestUserBanObj : UserBan = UserBan.query.filter_by(userid=UserObj.id, acknowledged = False).order_by(UserBan.id.desc()).first()
|
|
if LatestUserBanObj is None:
|
|
del session["not-approved-viewer"]
|
|
UserObj.accountstatus = 1
|
|
db.session.commit()
|
|
return redirect("/")
|
|
|
|
LatestUserBanObj.acknowledged = True
|
|
UserObj.accountstatus = 1
|
|
db.session.commit()
|
|
del session["not-approved-viewer"]
|
|
flash("Your account has been reactivated", "success")
|
|
return redirect("/login") |