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)
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)
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)
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'))
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)
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)
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'))
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"))