mirror of https://github.com/zulip/zulip.git
Handle more types of data in extract_recipients.
We now allow the list of recipients to be sent as a comma-delimited string with optional JSON encoding. (imported from commit e928b037bbd258348eb5b2ecca486d0bb77f593e)
This commit is contained in:
parent
6edb758136
commit
4bc76b2d6d
|
@ -536,13 +536,21 @@ def already_sent_mirrored_message_id(message):
|
|||
return messages[0].id
|
||||
return None
|
||||
|
||||
def extract_recipients(raw_recipients):
|
||||
def extract_recipients(s):
|
||||
# We try to accept multiple incoming formats for recipients.
|
||||
# See test_extract_recipients() for examples of what we allow.
|
||||
try:
|
||||
recipients = json_to_list(raw_recipients)
|
||||
data = ujson.loads(s)
|
||||
except ValueError:
|
||||
recipients = [raw_recipients]
|
||||
data = s
|
||||
|
||||
if isinstance(data, basestring):
|
||||
data = data.split(',')
|
||||
|
||||
if not isinstance(data, list):
|
||||
raise ValueError("Invalid data type for recipients")
|
||||
|
||||
recipients = data
|
||||
|
||||
# Strip recipients, and then remove any duplicates and any that
|
||||
# are the empty string after being stripped.
|
||||
|
|
|
@ -920,9 +920,20 @@ class MutedTopicsTests(AuthedTestCase):
|
|||
|
||||
class ExtractedRecipientsTest(TestCase):
|
||||
def test_extract_recipients(self):
|
||||
# JSON list w/dups, empties, and trailing whitespace
|
||||
s = ujson.dumps([' alice@zulip.com ', ' bob@zulip.com ', ' ', 'bob@zulip.com'])
|
||||
self.assertItemsEqual(extract_recipients(s), ['alice@zulip.com', 'bob@zulip.com'])
|
||||
|
||||
# simple string with one name
|
||||
s = 'alice@zulip.com '
|
||||
self.assertItemsEqual(extract_recipients(s), ['alice@zulip.com'])
|
||||
|
||||
# JSON-encoded string
|
||||
s = '"alice@zulip.com"'
|
||||
self.assertItemsEqual(extract_recipients(s), ['alice@zulip.com'])
|
||||
|
||||
# JSON-encoded, comma-delimited string
|
||||
s = '"bob@zulip.com,alice@zulip.com"'
|
||||
self.assertItemsEqual(extract_recipients(s), ['alice@zulip.com', 'bob@zulip.com'])
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue