check_send_message: Replace args/kwargs with explicit args.

This lets us actually type-checks the various views that are using
check_send_message.
This commit is contained in:
Daw-Ran Liou
2016-06-05 12:18:15 -07:00
committed by Tim Abbott
parent 553ef81f92
commit 70f44c00b0
2 changed files with 16 additions and 9 deletions

View File

@@ -860,9 +860,14 @@ def extract_recipients(s):
# check_send_message: # check_send_message:
# Returns the id of the sent message. Has same argspec as check_message. # Returns the id of the sent message. Has same argspec as check_message.
def check_send_message(*args, **kwargs): def check_send_message(sender, client, message_type_name, message_to,
# type: (*Any, **Any) -> int # TODO: Impose same argspec as check_message. subject_name, message_content, realm=None, forged=False,
message = check_message(*args, **kwargs) forged_timestamp=None, forwarder_user_profile=None, local_id=None,
sender_queue_id=None):
# type: (UserProfile, Client, str, List[text_type], text_type, text_type, Optional[Realm], bool, Optional[float], Optional[UserProfile], Optional[int], Optional[text_type]) -> int
message = check_message(sender, client, message_type_name, message_to,
subject_name, message_content, realm, forged, forged_timestamp,
forwarder_user_profile, local_id, sender_queue_id)
return do_send_messages([message])[0] return do_send_messages([message])[0]
def check_stream_name(stream_name): def check_stream_name(stream_name):
@@ -922,7 +927,7 @@ def check_message(sender, client, message_type_name, message_to,
subject_name, message_content, realm=None, forged=False, subject_name, message_content, realm=None, forged=False,
forged_timestamp=None, forwarder_user_profile=None, local_id=None, forged_timestamp=None, forwarder_user_profile=None, local_id=None,
sender_queue_id=None): sender_queue_id=None):
# type: (UserProfile, Client, str, Optional[List[text_type]], text_type, text_type, Optional[Realm], bool, Optional[float], Optional[UserProfile], Optional[int], Optional[text_type]) -> Dict[str, Any] # type: (UserProfile, Client, str, List[text_type], text_type, text_type, Optional[Realm], bool, Optional[float], Optional[UserProfile], Optional[int], Optional[text_type]) -> Dict[str, Any]
stream = None stream = None
if not message_to and message_type_name == 'stream' and sender.default_sending_stream: if not message_to and message_type_name == 'stream' and sender.default_sending_stream:
# Use the users default stream # Use the users default stream

View File

@@ -294,16 +294,18 @@ class AuthedTestCase(TestCase):
recipient__type=Recipient.STREAM) recipient__type=Recipient.STREAM)
return [get_display_recipient(sub.recipient) for sub in subs] return [get_display_recipient(sub.recipient) for sub in subs]
def send_message(self, sender_name, recipient_list, message_type, def send_message(self, sender_name, raw_recipients, message_type,
content="test content", subject="test", **kwargs): content=u"test content", subject=u"test", **kwargs):
# type: (str, Iterable[str], int, str, str, **Any) -> int # type: (str, Union[text_type, List[text_type]], int, text_type, text_type, **Any) -> int
sender = get_user_profile_by_email(sender_name) sender = get_user_profile_by_email(sender_name)
if message_type == Recipient.PERSONAL: if message_type == Recipient.PERSONAL:
message_type_name = "private" message_type_name = "private"
else: else:
message_type_name = "stream" message_type_name = "stream"
if isinstance(recipient_list, six.string_types): if isinstance(raw_recipients, six.string_types):
recipient_list = [recipient_list] recipient_list = [raw_recipients]
else:
recipient_list = raw_recipients
(sending_client, _) = Client.objects.get_or_create(name="test suite") (sending_client, _) = Client.objects.get_or_create(name="test suite")
return check_send_message( return check_send_message(