diff --git a/files/classes/mod_logs.py b/files/classes/mod_logs.py
index 97d07c630..ab75432ca 100644
--- a/files/classes/mod_logs.py
+++ b/files/classes/mod_logs.py
@@ -99,14 +99,10 @@ class ModAction(Base):
@property
@lazy
def target_link(self):
- if self.target_user:
- return f'{self.target_user.username}'
- elif self.target_post:
- return f'{self.target_post.title}'
- elif self.target_comment:
- return f'comment'
- else:
- return ""
+ if self.target_user: return f'{self.target_user.username}'
+ elif self.target_post: return f'{self.target_post.title.replace("<","").replace(">","")}'
+ elif self.target_comment: return f'comment'
+ else: return ""
@property
@lazy
diff --git a/files/classes/user.py b/files/classes/user.py
index b556272c8..1566b6771 100644
--- a/files/classes/user.py
+++ b/files/classes/user.py
@@ -1,7 +1,6 @@
-from sqlalchemy.orm import deferred, contains_eager, aliased
+from sqlalchemy.orm import deferred, aliased
from secrets import token_hex
import pyotp
-
from files.helpers.discord import remove_user
from files.helpers.images import *
from files.helpers.const import *
diff --git a/files/helpers/wrappers.py b/files/helpers/wrappers.py
index f40a080d6..5cfaea7db 100644
--- a/files/helpers/wrappers.py
+++ b/files/helpers/wrappers.py
@@ -1,9 +1,5 @@
-from random import vonmisesvariate
-from sqlalchemy.sql import visitors
-from werkzeug.wrappers.response import Response as RespObj
from .get import *
from .alerts import send_notification
-from files.__main__ import app
from files.helpers.const import *
diff --git a/files/mail/__init__.py b/files/mail/__init__.py
index 2db6c49d0..6ab92ed6a 100644
--- a/files/mail/__init__.py
+++ b/files/mail/__init__.py
@@ -1 +1,101 @@
-from .mail import *
+from os import environ
+import requests
+import time
+from flask import *
+from urllib.parse import quote
+
+from files.helpers.security import *
+from files.helpers.wrappers import *
+from files.classes import *
+from files.__main__ import app
+
+site = environ.get("DOMAIN").strip()
+name = environ.get("SITE_NAME").strip()
+mailgun_domain = environ.get("MAILGUN_DOMAIN", "").strip()
+
+def send_mail(to_address, subject, html, plaintext=None, files={},
+ from_address=f"{name} "):
+
+ url = f"https://api.mailgun.net/v3/{mailgun_domain}/messages"
+
+ data = {"from": from_address,
+ "to": [to_address],
+ "subject": subject,
+ "text": plaintext,
+ "html": html,
+ }
+
+ return requests.post(url,
+ auth=(
+ "api", environ.get("MAILGUN_KEY").strip()),
+ data=data,
+ files=[("attachment", (k, files[k])) for k in files]
+ )
+
+
+def send_verification_email(user, email=None):
+
+ if not email:
+ email = user.email
+
+ url = f"https://{app.config['SERVER_NAME']}/activate"
+ now = int(time.time())
+
+ token = generate_hash(f"{email}+{user.id}+{now}")
+ params = f"?email={quote(email)}&id={user.id}&time={now}&token={token}"
+
+ link = url + params
+
+ send_mail(to_address=email,
+ html=render_template("email/email_verify.html",
+ action_url=link,
+ v=user),
+ subject=f"Validate your {name} account email."
+ )
+
+
+@app.post("/verify_email")
+@auth_required
+def api_verify_email(v):
+
+ send_verification_email(v)
+
+ return {"message": "Email has been sent (ETA ~5 minutes)"}
+
+
+@app.get("/activate")
+@auth_desired
+def activate(v):
+
+ email = request.values.get("email", "")
+ id = request.values.get("id", "")
+ timestamp = int(request.values.get("time", "0"))
+ token = request.values.get("token", "")
+
+ if int(time.time()) - timestamp > 3600:
+ return render_template("message.html", v=v, title="Verification link expired.",
+ message="That link has expired. Visit your settings to send yourself another verification email."), 410
+
+ if not validate_hash(f"{email}+{id}+{timestamp}", token):
+ abort(403)
+
+ user = g.db.query(User).options(lazyload('*')).filter_by(id=id).first()
+ if not user:
+ abort(404)
+
+ if user.is_activated and user.email == email:
+ return render_template("message_success.html", v=v,
+ title="Email already verified.", message="Email already verified."), 404
+
+ user.email = email
+ user.is_activated = True
+
+ if not any([b.badge_id == 2 for b in user.badges]):
+ mail_badge = Badge(user_id=user.id,
+ badge_id=2)
+ g.db.add(mail_badge)
+
+ g.db.add(user)
+ g.db.commit()
+
+ return render_template("message_success.html", v=v, title="Email verified.", message=f"Your email {email} has been verified. Thank you.")
diff --git a/files/mail/mail.py b/files/mail/mail.py
deleted file mode 100644
index 6ab92ed6a..000000000
--- a/files/mail/mail.py
+++ /dev/null
@@ -1,101 +0,0 @@
-from os import environ
-import requests
-import time
-from flask import *
-from urllib.parse import quote
-
-from files.helpers.security import *
-from files.helpers.wrappers import *
-from files.classes import *
-from files.__main__ import app
-
-site = environ.get("DOMAIN").strip()
-name = environ.get("SITE_NAME").strip()
-mailgun_domain = environ.get("MAILGUN_DOMAIN", "").strip()
-
-def send_mail(to_address, subject, html, plaintext=None, files={},
- from_address=f"{name} "):
-
- url = f"https://api.mailgun.net/v3/{mailgun_domain}/messages"
-
- data = {"from": from_address,
- "to": [to_address],
- "subject": subject,
- "text": plaintext,
- "html": html,
- }
-
- return requests.post(url,
- auth=(
- "api", environ.get("MAILGUN_KEY").strip()),
- data=data,
- files=[("attachment", (k, files[k])) for k in files]
- )
-
-
-def send_verification_email(user, email=None):
-
- if not email:
- email = user.email
-
- url = f"https://{app.config['SERVER_NAME']}/activate"
- now = int(time.time())
-
- token = generate_hash(f"{email}+{user.id}+{now}")
- params = f"?email={quote(email)}&id={user.id}&time={now}&token={token}"
-
- link = url + params
-
- send_mail(to_address=email,
- html=render_template("email/email_verify.html",
- action_url=link,
- v=user),
- subject=f"Validate your {name} account email."
- )
-
-
-@app.post("/verify_email")
-@auth_required
-def api_verify_email(v):
-
- send_verification_email(v)
-
- return {"message": "Email has been sent (ETA ~5 minutes)"}
-
-
-@app.get("/activate")
-@auth_desired
-def activate(v):
-
- email = request.values.get("email", "")
- id = request.values.get("id", "")
- timestamp = int(request.values.get("time", "0"))
- token = request.values.get("token", "")
-
- if int(time.time()) - timestamp > 3600:
- return render_template("message.html", v=v, title="Verification link expired.",
- message="That link has expired. Visit your settings to send yourself another verification email."), 410
-
- if not validate_hash(f"{email}+{id}+{timestamp}", token):
- abort(403)
-
- user = g.db.query(User).options(lazyload('*')).filter_by(id=id).first()
- if not user:
- abort(404)
-
- if user.is_activated and user.email == email:
- return render_template("message_success.html", v=v,
- title="Email already verified.", message="Email already verified."), 404
-
- user.email = email
- user.is_activated = True
-
- if not any([b.badge_id == 2 for b in user.badges]):
- mail_badge = Badge(user_id=user.id,
- badge_id=2)
- g.db.add(mail_badge)
-
- g.db.add(user)
- g.db.commit()
-
- return render_template("message_success.html", v=v, title="Email verified.", message=f"Your email {email} has been verified. Thank you.")
diff --git a/files/routes/admin.py b/files/routes/admin.py
index 3e280f36a..d244172d4 100644
--- a/files/routes/admin.py
+++ b/files/routes/admin.py
@@ -3,7 +3,6 @@ import calendar
from sqlalchemy.orm import lazyload
import imagehash
from os import remove
-from os.path import exists
from PIL import Image as IMAGE
from files.helpers.wrappers import *
diff --git a/files/routes/comments.py b/files/routes/comments.py
index 512ab9581..21fe10641 100644
--- a/files/routes/comments.py
+++ b/files/routes/comments.py
@@ -1,6 +1,3 @@
-import traceback
-import sys
-
from files.helpers.wrappers import *
from files.helpers.filters import *
from files.helpers.alerts import *
@@ -10,7 +7,6 @@ from files.helpers.const import *
from files.classes import *
from files.routes.front import comment_idlist
from pusher_push_notifications import PushNotifications
-
from flask import *
from files.__main__ import app, limiter
diff --git a/files/routes/reporting.py b/files/routes/reporting.py
index 1781ed959..305243dde 100644
--- a/files/routes/reporting.py
+++ b/files/routes/reporting.py
@@ -2,8 +2,6 @@ from files.helpers.wrappers import *
from files.helpers.get import *
from flask import g
from files.__main__ import app
-from files.helpers.sanitize import sanitize
-from os import path
@app.post("/flag/post/")
@auth_desired
diff --git a/files/routes/users.py b/files/routes/users.py
index 15e2aacbe..ce13728a8 100644
--- a/files/routes/users.py
+++ b/files/routes/users.py
@@ -1,9 +1,6 @@
import qrcode
import io
import time
-import traceback
-import sys
-
from files.classes.user import ViewerRelationship
from files.helpers.alerts import *
from files.helpers.sanitize import *