diff --git a/tildes/tildes/models/topic/topic.py b/tildes/tildes/models/topic/topic.py
index 8632384..ebe0b48 100644
--- a/tildes/tildes/models/topic/topic.py
+++ b/tildes/tildes/models/topic/topic.py
@@ -376,3 +376,32 @@ class Topic(DatabaseModel):
metadata_strings.append(f"{self.link_domain}")
return ", ".join(metadata_strings)
+
+ @property
+ def content_excerpt(self) -> Optional[str]:
+ """Return the topic's content excerpt (if it has one)."""
+ if self.is_text_type:
+ return self.get_content_metadata("excerpt")
+
+ # if it looks like it's a link to a tweet
+ if (
+ self.is_link_type
+ and self.link_domain == "twitter.com"
+ and self.link
+ and "/status/" in self.link
+ ):
+ authors = self.get_content_metadata("authors")
+ tweet = self.get_content_metadata("description")
+
+ if authors and tweet:
+ return f"@{authors[0]}: {tweet}"
+
+ return None
+
+ @property
+ def is_content_excerpt_truncated(self) -> bool:
+ """Return whether the content excerpt has been truncated or not."""
+ if self.is_text_type and self.content_excerpt:
+ return self.content_excerpt.endswith("...")
+
+ return False
diff --git a/tildes/tildes/templates/macros/topics.jinja2 b/tildes/tildes/templates/macros/topics.jinja2
index 840526a..e318786 100644
--- a/tildes/tildes/templates/macros/topics.jinja2
+++ b/tildes/tildes/templates/macros/topics.jinja2
@@ -49,7 +49,7 @@
{% endif %}
- {% if topic.is_text_type and topic.get_content_metadata('excerpt') %}
+ {% if topic.content_excerpt %}
{{ topic_excerpt_expandable(topic) }}
{% endif %}
@@ -87,11 +87,16 @@
{% if topic.is_spoiler %}
{% set excerpt = 'Warning: this post may contain spoilers' %}
{% set is_expandable = True %}
- {% else %}
- {% set excerpt = topic.get_content_metadata('excerpt') %}
- {# if the excerpt is the full text, it doesn't need to be expandable #}
- {% set is_expandable = excerpt.endswith('...') %}
+ {% if topic.is_text_type %}
+ {% set full_text = topic.rendered_html|safe %}
+ {% else %}
+ {% set full_text = topic.content_excerpt %}
+ {% endif %}
+ {% else %}
+ {% set excerpt = topic.content_excerpt %}
+ {% set is_expandable = topic.is_content_excerpt_truncated %}
+ {% set full_text = topic.rendered_html|safe %}
{% endif %}
{% if is_expandable %}
@@ -101,10 +106,10 @@
{% endif %}
>
{{ topic.get_content_metadata('excerpt') }}
+{{ excerpt }}
{% endif %} {% endmacro %}