mirror of https://github.com/zulip/zulip.git
open graph: Display realm description as open graph description.
This commit is contained in:
parent
a653fcca93
commit
2d9c5b3575
|
@ -17,7 +17,7 @@ from zerver.decorator import get_client_name
|
||||||
from zerver.lib.send_email import FromAddress
|
from zerver.lib.send_email import FromAddress
|
||||||
from zerver.lib.subdomains import get_subdomain
|
from zerver.lib.subdomains import get_subdomain
|
||||||
from zerver.lib.realm_icon import get_realm_icon_url
|
from zerver.lib.realm_icon import get_realm_icon_url
|
||||||
from zerver.lib.realm_description import get_realm_rendered_description
|
from zerver.lib.realm_description import get_realm_rendered_description, get_realm_text_description
|
||||||
|
|
||||||
from version import ZULIP_VERSION, LATEST_RELEASE_VERSION, LATEST_MAJOR_VERSION, \
|
from version import ZULIP_VERSION, LATEST_RELEASE_VERSION, LATEST_MAJOR_VERSION, \
|
||||||
LATEST_RELEASE_ANNOUNCEMENT
|
LATEST_RELEASE_ANNOUNCEMENT
|
||||||
|
@ -154,6 +154,10 @@ def login_context(request: HttpRequest) -> Dict[str, Any]:
|
||||||
'two_factor_authentication_enabled': settings.TWO_FACTOR_AUTHENTICATION_ENABLED,
|
'two_factor_authentication_enabled': settings.TWO_FACTOR_AUTHENTICATION_ENABLED,
|
||||||
} # type: Dict[str, Any]
|
} # type: Dict[str, Any]
|
||||||
|
|
||||||
|
if realm is not None and realm.description:
|
||||||
|
context['OPEN_GRAPH_TITLE'] = realm.name
|
||||||
|
context['OPEN_GRAPH_DESCRIPTION'] = get_realm_text_description(realm)
|
||||||
|
|
||||||
# Add the keys for our standard authentication backends.
|
# Add the keys for our standard authentication backends.
|
||||||
no_auth_enabled = True
|
no_auth_enabled = True
|
||||||
social_backends = []
|
social_backends = []
|
||||||
|
|
|
@ -446,6 +446,9 @@ def realm_alert_words_automaton_cache_key(realm: 'Realm') -> str:
|
||||||
def realm_rendered_description_cache_key(realm: 'Realm') -> str:
|
def realm_rendered_description_cache_key(realm: 'Realm') -> str:
|
||||||
return "realm_rendered_description:%s" % (realm.string_id,)
|
return "realm_rendered_description:%s" % (realm.string_id,)
|
||||||
|
|
||||||
|
def realm_text_description_cache_key(realm: 'Realm') -> str:
|
||||||
|
return "realm_text_description:%s" % (realm.string_id,)
|
||||||
|
|
||||||
# Called by models.py to flush the stream cache whenever we save a stream
|
# Called by models.py to flush the stream cache whenever we save a stream
|
||||||
# object.
|
# object.
|
||||||
def flush_stream(sender: Any, **kwargs: Any) -> None:
|
def flush_stream(sender: Any, **kwargs: Any) -> None:
|
||||||
|
|
|
@ -1,9 +1,16 @@
|
||||||
from zerver.models import Realm
|
from zerver.models import Realm
|
||||||
from zerver.lib.cache import cache_with_key, realm_rendered_description_cache_key
|
from zerver.lib.cache import cache_with_key, realm_rendered_description_cache_key, \
|
||||||
|
realm_text_description_cache_key
|
||||||
from zerver.lib.bugdown import convert as bugdown_convert
|
from zerver.lib.bugdown import convert as bugdown_convert
|
||||||
|
from zerver.lib.html_to_text import html_to_text
|
||||||
|
|
||||||
@cache_with_key(realm_rendered_description_cache_key, timeout=3600*24*7)
|
@cache_with_key(realm_rendered_description_cache_key, timeout=3600*24*7)
|
||||||
def get_realm_rendered_description(realm: Realm) -> str:
|
def get_realm_rendered_description(realm: Realm) -> str:
|
||||||
realm_description_raw = realm.description or "The coolest place in the universe."
|
realm_description_raw = realm.description or "The coolest place in the universe."
|
||||||
return bugdown_convert(realm_description_raw, message_realm=realm,
|
return bugdown_convert(realm_description_raw, message_realm=realm,
|
||||||
no_previews=True)
|
no_previews=True)
|
||||||
|
|
||||||
|
@cache_with_key(realm_text_description_cache_key, timeout=3600*24*7)
|
||||||
|
def get_realm_text_description(realm: Realm) -> str:
|
||||||
|
html_description = get_realm_rendered_description(realm)
|
||||||
|
return html_to_text(html_description)
|
||||||
|
|
|
@ -5,8 +5,7 @@ from bs4 import BeautifulSoup
|
||||||
from django.test import override_settings
|
from django.test import override_settings
|
||||||
from unittest.mock import Mock, patch
|
from unittest.mock import Mock, patch
|
||||||
from zerver.lib.test_classes import ZulipTestCase
|
from zerver.lib.test_classes import ZulipTestCase
|
||||||
from zerver.middleware import is_slow_query
|
from zerver.middleware import is_slow_query, write_log_line
|
||||||
from zerver.middleware import write_log_line
|
|
||||||
|
|
||||||
class SlowQueryTest(ZulipTestCase):
|
class SlowQueryTest(ZulipTestCase):
|
||||||
SLOW_QUERY_TIME = 10
|
SLOW_QUERY_TIME = 10
|
||||||
|
@ -139,3 +138,13 @@ class OpenGraphTest(ZulipTestCase):
|
||||||
[],
|
[],
|
||||||
# Test that our open graph logic doesn't throw a 500
|
# Test that our open graph logic doesn't throw a 500
|
||||||
404)
|
404)
|
||||||
|
|
||||||
|
def test_login_page_simple_description(self) -> None:
|
||||||
|
name = 'Zulip Dev'
|
||||||
|
description = "The Zulip development environment default organization. It's great for testing!"
|
||||||
|
|
||||||
|
self.check_title_and_description(
|
||||||
|
'/login/',
|
||||||
|
name,
|
||||||
|
[description],
|
||||||
|
[])
|
||||||
|
|
Loading…
Reference in New Issue