diff --git a/app/__init__.py b/app/__init__.py
index 8183374..0eb4e78 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -10,6 +10,7 @@ from .constants import (
SIG_BANNED_TAGS, STRICT_BANNED_TAGS,
)
from .lib.babycode import babycode_to_html, babycode_to_rssxml, EMOJI, BABYCODE_VERSION
+from .lib.exceptions import SiteNameMissingException
from datetime import datetime, timezone
from flask_caching import Cache
import os
@@ -165,6 +166,8 @@ def create_app():
load_dotenv()
else:
app.config["DB_PATH"] = "data/db/db.prod.sqlite"
+ if not app.config["SERVER_NAME"]:
+ raise SiteNameMissingException()
app.config["SECRET_KEY"] = os.getenv("FLASK_SECRET_KEY")
diff --git a/app/lib/babycode.py b/app/lib/babycode.py
index 36663fa..e760aac 100644
--- a/app/lib/babycode.py
+++ b/app/lib/babycode.py
@@ -196,13 +196,12 @@ class RSSXMLRenderer(BabycodeRenderer):
def make_mention(self, e):
from ..models import Users
- from flask import url_for, current_app
- with current_app.test_request_context('/'):
- target_user = Users.find({'username': e['name'].lower()})
- if not target_user:
- return f"@{e['name']}"
+ from flask import url_for
+ target_user = Users.find({'username': e['name'].lower()})
+ if not target_user:
+ return f"@{e['name']}"
- return f'{target_user.get_readable_name()}'
+ return f'{'@' if not target_user.has_display_name() else ''}{target_user.get_readable_name()}'
NAMED_COLORS = [
diff --git a/app/lib/exceptions.py b/app/lib/exceptions.py
new file mode 100644
index 0000000..7123d7d
--- /dev/null
+++ b/app/lib/exceptions.py
@@ -0,0 +1,9 @@
+class MissingConfigurationException(Exception):
+ def __init__(self, configuration_field: str):
+ message = f"Missing configuration field '{configuration_field}'"
+ super().__init__(message)
+
+
+class SiteNameMissingException(MissingConfigurationException):
+ def __init__(self):
+ super().__init__('SITE_NAME')