diff --git a/moku/markdown.py b/moku/markdown.py index a1b3ebc..39f5604 100644 --- a/moku/markdown.py +++ b/moku/markdown.py @@ -1,6 +1,6 @@ from django.apps import apps from django.conf import settings -from mistune import HTMLRenderer, Markdown +from mistune import HTMLRenderer, InlineParser, Markdown from mistune.plugins.formatting import strikethrough, subscript, superscript from mistune.plugins.url import url @@ -44,9 +44,12 @@ def _username(md): full_markdown = Markdown( renderer=HTMLRenderer(), + inline=InlineParser(hard_wrap=True), plugins=[strikethrough, subscript, superscript, url, _username], ) basic_markdown = Markdown( - renderer=HTMLRenderer(), plugins=[strikethrough, subscript, superscript, url] + renderer=HTMLRenderer(), + inline=InlineParser(hard_wrap=True), + plugins=[strikethrough, subscript, superscript, url], ) diff --git a/moku/models/user.py b/moku/models/user.py index aba4b45..6ffaa10 100644 --- a/moku/models/user.py +++ b/moku/models/user.py @@ -4,6 +4,7 @@ from django.db import models from django.urls import reverse from django.utils.translation import gettext_lazy as _ +from moku.markdown import full_markdown from moku.validators import validate_username_length, validate_username_regex @@ -80,6 +81,11 @@ class User(AbstractUser): """Whether the user has confirmed their email address.""" return self.email_confirmed_at is not None + def bio_as_html(self): + if not self.bio: + return "" + return full_markdown(self.bio) + class UserSettings(models.Model): """Represents settings for a single user.""" diff --git a/moku/templates/moku/profile/show.jinja b/moku/templates/moku/profile/show.jinja index 483b106..680fc99 100644 --- a/moku/templates/moku/profile/show.jinja +++ b/moku/templates/moku/profile/show.jinja @@ -25,7 +25,9 @@ {% if profile.bio %}
{% trans %}about me{% endtrans %}
-
{{ profile.bio }}
+
+ {{ profile.bio_as_html()|safe }} +
{% endif %}