mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 14:03:30 +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_fixtures.py',
|
||||||
'zerver/lib/test_runner.py',
|
'zerver/lib/test_runner.py',
|
||||||
'zerver/lib/api_test_helpers.py',
|
'zerver/lib/api_test_helpers.py',
|
||||||
|
# Experimenatal
|
||||||
|
'zerver/lib/widget.py',
|
||||||
# Webhook integrations with incomplete coverage
|
# Webhook integrations with incomplete coverage
|
||||||
'zerver/webhooks/basecamp/view.py',
|
'zerver/webhooks/basecamp/view.py',
|
||||||
'zerver/webhooks/beanstalk/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.alert_words import alert_words_in_realm
|
||||||
from zerver.lib.avatar import avatar_url, avatar_url_from_dict
|
from zerver.lib.avatar import avatar_url, avatar_url_from_dict
|
||||||
from zerver.lib.stream_recipient import StreamRecipientMap
|
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 import transaction, IntegrityError, connection
|
||||||
from django.db.models import F, Q, Max, Sum
|
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['sender_queue_id'] = message.get('sender_queue_id', None)
|
||||||
message['realm'] = message.get('realm', message['message'].sender.realm)
|
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(
|
mention_data = bugdown.MentionData(
|
||||||
realm_id=message['realm'].id,
|
realm_id=message['realm'].id,
|
||||||
content=message['message'].content,
|
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):
|
if Message.content_has_attachment(message['message'].content):
|
||||||
do_claim_attachments(message['message'])
|
do_claim_attachments(message['message'])
|
||||||
|
|
||||||
|
for message in messages:
|
||||||
|
do_widget_post_save_actions(message)
|
||||||
|
|
||||||
for message in messages:
|
for message in messages:
|
||||||
# Deliver events to the real-time push system, as well as
|
# Deliver events to the real-time push system, as well as
|
||||||
# enqueuing any additional processing triggered by the message.
|
# 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