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')