mirror of
https://github.com/zulip/zulip.git
synced 2025-10-29 02:53:52 +00:00
Add widget.py to enable widgets on the server side.
The only slash command implemented in this initial version is an extremely crippled version of a "/stats" slash command that reports that you are running 1 server.
This commit is contained in:
@@ -93,6 +93,8 @@ not_yet_fully_covered = {
|
||||
'zerver/lib/test_fixtures.py',
|
||||
'zerver/lib/test_runner.py',
|
||||
'zerver/lib/api_test_helpers.py',
|
||||
# Experimenatal
|
||||
'zerver/lib/widget.py',
|
||||
# Webhook integrations with incomplete coverage
|
||||
'zerver/webhooks/basecamp/view.py',
|
||||
'zerver/webhooks/beanstalk/view.py',
|
||||
|
||||
@@ -88,6 +88,8 @@ from zerver.models import Realm, RealmEmoji, Stream, UserProfile, UserActivity,
|
||||
from zerver.lib.alert_words import alert_words_in_realm
|
||||
from zerver.lib.avatar import avatar_url, avatar_url_from_dict
|
||||
from zerver.lib.stream_recipient import StreamRecipientMap
|
||||
from zerver.lib.widget import do_widget_post_save_actions, \
|
||||
get_fixed_content_for_widget
|
||||
|
||||
from django.db import transaction, IntegrityError, connection
|
||||
from django.db.models import F, Q, Max, Sum
|
||||
@@ -1137,6 +1139,10 @@ def do_send_messages(messages_maybe_none: Sequence[Optional[MutableMapping[str,
|
||||
message['sender_queue_id'] = message.get('sender_queue_id', None)
|
||||
message['realm'] = message.get('realm', message['message'].sender.realm)
|
||||
|
||||
# Some widgets just overwrite content.
|
||||
fixed_content = get_fixed_content_for_widget(message['message'].content)
|
||||
message['message'].content = fixed_content
|
||||
|
||||
mention_data = bugdown.MentionData(
|
||||
realm_id=message['realm'].id,
|
||||
content=message['message'].content,
|
||||
@@ -1238,6 +1244,9 @@ def do_send_messages(messages_maybe_none: Sequence[Optional[MutableMapping[str,
|
||||
if Message.content_has_attachment(message['message'].content):
|
||||
do_claim_attachments(message['message'])
|
||||
|
||||
for message in messages:
|
||||
do_widget_post_save_actions(message)
|
||||
|
||||
for message in messages:
|
||||
# Deliver events to the real-time push system, as well as
|
||||
# enqueuing any additional processing triggered by the message.
|
||||
|
||||
19
zerver/lib/widget.py
Normal file
19
zerver/lib/widget.py
Normal file
@@ -0,0 +1,19 @@
|
||||
from typing import MutableMapping, Any
|
||||
from django.conf import settings
|
||||
|
||||
def get_fixed_content_for_widget(content: str) -> str:
|
||||
if not settings.ALLOW_SUB_MESSAGES:
|
||||
return content
|
||||
|
||||
if content == '/stats':
|
||||
return 'We are running **1 server**.'
|
||||
|
||||
return content
|
||||
|
||||
def do_widget_post_save_actions(message: MutableMapping[str, Any]) -> None:
|
||||
'''
|
||||
This is experimental code that only works with the
|
||||
webapp for now.
|
||||
'''
|
||||
if not settings.ALLOW_SUB_MESSAGES:
|
||||
return
|
||||
Reference in New Issue
Block a user