diff --git a/files/classes/chats.py b/files/classes/chats.py index d2ed24f86..ed4a26baf 100644 --- a/files/classes/chats.py +++ b/files/classes/chats.py @@ -94,3 +94,8 @@ class ChatMessage(Base): @lazy def pride_username(self): return self.user.pride_username(None) + + @property + @lazy + def permalink(self): + return f"{SITE_FULL}/chat/{self.chat_id}#{self.id}" diff --git a/files/helpers/actions.py b/files/helpers/actions.py index b7a07a234..86be6a22c 100644 --- a/files/helpers/actions.py +++ b/files/helpers/actions.py @@ -547,10 +547,8 @@ def execute_under_siege(v, target, body, kind): reason = f'report on post' else: reason = f'report on comment' - elif hasattr(target, 'permalink'): - reason = f'{kind}' else: - reason = kind + reason = f'{kind}' minutes = math.ceil(v.age / 60) time_taken = f'{minutes} minute' diff --git a/files/routes/chat.py b/files/routes/chat.py index d0b607676..945a9ae5d 100644 --- a/files/routes/chat.py +++ b/files/routes/chat.py @@ -106,9 +106,6 @@ def speak(data, v): if isinstance(text_html , tuple): return '' if len(text_html) > 5000: return '' - execute_blackjack(v, None, text, "chat") - execute_under_siege(v, None, text, "chat") - quotes = data['quotes'] if quotes: quotes = int(quotes) else: quotes = None @@ -125,6 +122,9 @@ def speak(data, v): g.db.add(chat_message) g.db.flush() + execute_blackjack(v, chat_message, text, "chat") + execute_under_siege(v, chat_message, text, "chat") + if v.id == chat.owner_id: for i in chat_adding_regex.finditer(text): user = get_user(i.group(1), graceful=True, attributes=[User.id]) diff --git a/files/routes/chats.py b/files/routes/chats.py index 3509cd44b..ff8d0cf0d 100644 --- a/files/routes/chats.py +++ b/files/routes/chats.py @@ -75,7 +75,12 @@ 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).join(ChatMessage.user).filter(or_(User.id == v.id, User.shadowbanned == None)).options(joinedload(ChatMessage.quoted_message)).filter(ChatMessage.chat_id == chat.id).order_by(ChatMessage.id.desc()).limit(250).all()) + displayed_messages = g.db.query(ChatMessage).options(joinedload(ChatMessage.quoted_message)).filter(ChatMessage.chat_id == chat.id) + + if v.admin_level < PERMS['USER_SHADOWBAN']: + displayed_messages = displayed_messages.join(ChatMessage.user).filter(or_(User.id == v.id, User.shadowbanned == None)) + + displayed_messages = reversed(displayed_messages.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 00046e6ad..8c6204c98 100644 --- a/files/templates/util/macros.html +++ b/files/templates/util/macros.html @@ -272,6 +272,12 @@ {% macro chat_group_template(id, m) %}
+ {% if m %} + {% with user = m.user %} + {%- include 'admin/shadowbanned_tooltip.html' -%} + {% endwith %} + {% endif %} +