diff --git a/zerver/lib/widget.py b/zerver/lib/widget.py index 97c7d6bbd7..383b569450 100644 --- a/zerver/lib/widget.py +++ b/zerver/lib/widget.py @@ -1,6 +1,12 @@ from typing import MutableMapping, Any from django.conf import settings +import re +import json + +from zerver.models import SubMessage + + def get_fixed_content_for_widget(content: str) -> str: if not settings.ALLOW_SUB_MESSAGES: return content @@ -17,3 +23,25 @@ def do_widget_post_save_actions(message: MutableMapping[str, Any]) -> None: ''' if not settings.ALLOW_SUB_MESSAGES: return + content = message['message'].content + sender_id = message['message'].sender_id + message_id = message['message'].id + + widget_type = None + extra_data = None + if content in ['/poll', '/tictactoe']: + widget_type = content[1:] + + if widget_type: + content = dict( + widget_type=widget_type, + extra_data=extra_data + ) + submessage = SubMessage( + sender_id=sender_id, + message_id=message_id, + msg_type='widget', + content=json.dumps(content), + ) + submessage.save() + message['submessages'] = SubMessage.get_raw_db_rows([message_id])