Пример #1
0
    def consume(self, event):
        # type: (Mapping[str, Any]) -> None
        for url in event['urls']:
            url_preview.get_link_embed_data(url)

        message = Message.objects.get(id=event['message_id'])
        # If the message changed, we will run this task after updating the message
        # in zerver.views.messages.update_message_backend
        if message.content != event['message_content']:
            return
        if message.content is not None:
            ums = UserMessage.objects.filter(
                message=message.id).select_related("user_profile")
            message_users = {um.user_profile for um in ums}

            # Fetch the realm whose settings we're using for rendering
            realm = Realm.objects.get(id=event['message_realm_id'])

            # If rendering fails, the called code will raise a JsonableError.
            rendered_content = render_incoming_message(
                message,
                message.content,
                message_users,
                realm)
            do_update_embedded_data(
                message.sender, message, message.content, rendered_content)
Пример #2
0
    def consume(self, event: Mapping[str, Any]) -> None:
        for url in event["urls"]:
            start_time = time.time()
            url_preview.get_link_embed_data(url)
            logging.info("Time spent on get_link_embed_data for %s: %s", url,
                         time.time() - start_time)

        message = Message.objects.get(id=event["message_id"])
        # If the message changed, we will run this task after updating the message
        # in zerver.lib.actions.check_update_message
        if message.content != event["message_content"]:
            return
        if message.content is not None:
            query = UserMessage.objects.filter(message=message.id, )
            message_user_ids = set(
                query.values_list("user_profile_id", flat=True))

            # Fetch the realm whose settings we're using for rendering
            realm = Realm.objects.get(id=event["message_realm_id"])

            # If rendering fails, the called code will raise a JsonableError.
            rendering_result = render_incoming_message(message,
                                                       message.content,
                                                       message_user_ids, realm)
            do_update_embedded_data(message.sender, message, message.content,
                                    rendering_result)
Пример #3
0
    def consume(self, event):
        # type: (Mapping[str, Any]) -> None
        for url in event['urls']:
            url_preview.get_link_embed_data(url)

        message = Message.objects.get(id=event['message_id'])
        # If the message changed, we will run this task after updating the message
        # in zerver.views.messages.update_message_backend
        if message.content != event['message_content']:
            return
        if message.content is not None:
            query = UserMessage.objects.filter(
                message=message.id
            )
            message_user_ids = set(query.values_list('user_profile_id', flat=True))

            # Fetch the realm whose settings we're using for rendering
            realm = Realm.objects.get(id=event['message_realm_id'])

            # If rendering fails, the called code will raise a JsonableError.
            rendered_content = render_incoming_message(
                message,
                message.content,
                message_user_ids,
                realm)
            do_update_embedded_data(
                message.sender, message, message.content, rendered_content)
Пример #4
0
 def test_invalid_link(self):
     # type: () -> None
     with self.settings(INLINE_URL_EMBED_PREVIEW=True,
                        TEST_SUITE=False,
                        CACHES=TEST_CACHES):
         self.assertIsNone(get_link_embed_data('com.notvalidlink'))
         self.assertIsNone(get_link_embed_data(u'μένει.com.notvalidlink'))
Пример #5
0
    def consume(self, event):
        # type: (Mapping[str, Any]) -> None
        for url in event['urls']:
            url_preview.get_link_embed_data(url)

        message = Message.objects.get(id=event['message_id'])
        # If the message changed, we will run this task after updating the message
        # in zerver.views.messages.update_message_backend
        if message.content != event['message_content']:
            return
        if message.content is not None:
            ums = UserMessage.objects.filter(
                message=message.id).select_related("user_profile")
            message_users = {um.user_profile for um in ums}
            # If rendering fails, the called code will raise a JsonableError.
            rendered_content = render_incoming_message(
                message, content=message.content, message_users=message_users)
            do_update_embedded_data(message.sender, message, message.content,
                                    rendered_content)
Пример #6
0
    def consume(self, event: Mapping[str, Any]) -> None:
        url_embed_data: Dict[str, Optional[UrlEmbedData]] = {}
        for url in event["urls"]:
            start_time = time.time()
            url_embed_data[url] = url_preview.get_link_embed_data(url)
            logging.info("Time spent on get_link_embed_data for %s: %s", url,
                         time.time() - start_time)

        with transaction.atomic():
            try:
                message = Message.objects.select_for_update().get(
                    id=event["message_id"])
            except Message.DoesNotExist:
                # Message may have been deleted
                return

            # If the message changed, we will run this task after updating the message
            # in zerver.actions.message_edit.check_update_message
            if message.content != event["message_content"]:
                return

            if message.content is None:
                return

            # Fetch the realm whose settings we're using for rendering
            realm = Realm.objects.get(id=event["message_realm_id"])

            # If rendering fails, the called code will raise a JsonableError.
            rendering_result = render_incoming_message(
                message,
                message.content,
                realm,
                url_embed_data=url_embed_data,
            )
            do_update_embedded_data(message.sender, message, message.content,
                                    rendering_result)
Пример #7
0
 def test_invalid_link(self):
     # type: () -> None
     with self.settings(INLINE_URL_EMBED_PREVIEW=True, TEST_SUITE=False, CACHES=TEST_CACHES):
         self.assertIsNone(get_link_embed_data('com.notvalidlink'))
         self.assertIsNone(get_link_embed_data(u'μένει.com.notvalidlink'))
Пример #8
0
 def test_invalid_link(self) -> None:
     with self.settings(INLINE_URL_EMBED_PREVIEW=True, TEST_SUITE=False):
         self.assertIsNone(get_link_embed_data("com.notvalidlink"))
         self.assertIsNone(get_link_embed_data("μένει.com.notvalidlink"))