diff --git a/files/classes/chats.py b/files/classes/chats.py index 2459fd591..523f090f0 100644 --- a/files/classes/chats.py +++ b/files/classes/chats.py @@ -66,6 +66,7 @@ class ChatMessage(Base): created_utc = Column(Integer) user = relationship("User") + quoted_message = relationship("ChatMessage", remote_side=[id]) def __init__(self, *args, **kwargs): if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) diff --git a/files/routes/chats.py b/files/routes/chats.py index 5638f2666..94b29047e 100644 --- a/files/routes/chats.py +++ b/files/routes/chats.py @@ -71,7 +71,7 @@ def chat(v, chat_id): if v.admin_level < PERMS['VIEW_CHATS'] and not membership: abort(403, "You're not a member of this chat!") - displayed_messages = reversed(g.db.query(ChatMessage).filter_by(chat_id=chat.id).order_by(ChatMessage.id.desc()).limit(250).all()) + displayed_messages = reversed(g.db.query(ChatMessage).options(joinedload(ChatMessage.quoted_message)).filter_by(chat_id=chat.id).order_by(ChatMessage.id.desc()).limit(250).all()) displayed_messages = {m.id: m for m in displayed_messages} if chat.id == 1: diff --git a/files/templates/util/macros.html b/files/templates/util/macros.html index 017920a36..fc54fb8be 100644 --- a/files/templates/util/macros.html +++ b/files/templates/util/macros.html @@ -284,8 +284,7 @@ {% endmacro %} {% macro chat_line_template(id, m, vlink) %} - {% set quote_exists = m and m.quotes and messages.get(m.quotes) %} - {% set mentioned = m and vlink in m.text_html or (quote_exists and messages[m.quotes].user_id == v.id) %} + {% set mentioned = m and vlink in m.text_html or (m and m.quoted_message and m.quoted_message.user_id == v.id) %}