push notifs: For group PMs, identify the users in the group.

This commit is contained in:
Greg Price
2018-02-16 14:18:47 -08:00
committed by Greg Price
parent 4103996a22
commit 693a9a5e70
2 changed files with 23 additions and 5 deletions

View File

@@ -26,7 +26,7 @@ import ujson
from zerver.decorator import statsd_increment
from zerver.lib.avatar import absolute_avatar_url
from zerver.lib.exceptions import ErrorCode, JsonableError
from zerver.lib.message import access_message
from zerver.lib.message import access_message, huddle_users
from zerver.lib.queue import retry_event
from zerver.lib.timestamp import datetime_to_timestamp, timestamp_to_datetime
from zerver.lib.utils import generate_random_token
@@ -479,11 +479,14 @@ def get_common_payload(message: Message) -> Dict[str, Any]:
data['sender_id'] = message.sender.id
data['sender_email'] = message.sender.email
if message.is_stream_message():
if message.recipient.type == Recipient.STREAM:
data['recipient_type'] = "stream"
data['stream'] = get_display_recipient(message.recipient)
data['topic'] = message.subject
else:
elif message.recipient.type == Recipient.HUDDLE:
data['recipient_type'] = "private"
data['pm_users'] = huddle_users(message.recipient.id)
else: # Recipient.PERSONAL
data['recipient_type'] = "private"
return data

View File

@@ -28,6 +28,7 @@ from zerver.models import (
get_realm,
Recipient,
Stream,
Subscription,
)
from zerver.lib.soft_deactivation import do_soft_deactivate_users
from zerver.lib import push_notifications as apn
@@ -679,7 +680,10 @@ class TestGetAlertFromMessage(PushNotificationTest):
class TestGetAPNsPayload(PushNotificationTest):
def test_get_apns_payload(self) -> None:
message = self.get_message(Recipient.HUDDLE)
message_id = self.send_huddle_message(
self.sender.email,
[self.example_email('othello'), self.example_email('cordelia')])
message = Message.objects.get(id=message_id)
message.trigger = 'private_message'
payload = apn.get_apns_payload(message)
expected = {
@@ -692,6 +696,10 @@ class TestGetAPNsPayload(PushNotificationTest):
'zulip': {
'message_ids': [message.id],
'recipient_type': 'private',
'pm_users': ','.join(
str(s.user_profile_id)
for s in Subscription.objects.filter(
recipient=message.recipient)),
'sender_email': 'hamlet@zulip.com',
'sender_id': 4,
'server': settings.EXTERNAL_HOST,
@@ -731,7 +739,10 @@ class TestGetAPNsPayload(PushNotificationTest):
@override_settings(PUSH_NOTIFICATION_REDACT_CONTENT = True)
def test_get_apns_payload_redacted_content(self) -> None:
message = self.get_message(Recipient.HUDDLE)
message_id = self.send_huddle_message(
self.sender.email,
[self.example_email('othello'), self.example_email('cordelia')])
message = Message.objects.get(id=message_id)
message.trigger = 'private_message'
payload = apn.get_apns_payload(message)
expected = {
@@ -744,6 +755,10 @@ class TestGetAPNsPayload(PushNotificationTest):
'zulip': {
'message_ids': [message.id],
'recipient_type': 'private',
'pm_users': ','.join(
str(s.user_profile_id)
for s in Subscription.objects.filter(
recipient=message.recipient)),
'sender_email': self.example_email("hamlet"),
'sender_id': 4,
'server': settings.EXTERNAL_HOST,