feat: 🔗 enable markdown in user bio

This commit is contained in:
m5ka 2024-03-27 12:28:23 +00:00
parent 4a3bb0ec56
commit fce8aa19ed
3 changed files with 14 additions and 3 deletions

View file

@ -1,6 +1,6 @@
from django.apps import apps from django.apps import apps
from django.conf import settings 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.formatting import strikethrough, subscript, superscript
from mistune.plugins.url import url from mistune.plugins.url import url
@ -44,9 +44,12 @@ def _username(md):
full_markdown = Markdown( full_markdown = Markdown(
renderer=HTMLRenderer(), renderer=HTMLRenderer(),
inline=InlineParser(hard_wrap=True),
plugins=[strikethrough, subscript, superscript, url, _username], plugins=[strikethrough, subscript, superscript, url, _username],
) )
basic_markdown = Markdown( basic_markdown = Markdown(
renderer=HTMLRenderer(), plugins=[strikethrough, subscript, superscript, url] renderer=HTMLRenderer(),
inline=InlineParser(hard_wrap=True),
plugins=[strikethrough, subscript, superscript, url],
) )

View file

@ -4,6 +4,7 @@ from django.db import models
from django.urls import reverse from django.urls import reverse
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from moku.markdown import full_markdown
from moku.validators import validate_username_length, validate_username_regex 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.""" """Whether the user has confirmed their email address."""
return self.email_confirmed_at is not None 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): class UserSettings(models.Model):
"""Represents settings for a single user.""" """Represents settings for a single user."""

View file

@ -25,7 +25,9 @@
{% if profile.bio %} {% if profile.bio %}
<div class="double"> <div class="double">
<dt>{% trans %}about me{% endtrans %}</dt> <dt>{% trans %}about me{% endtrans %}</dt>
<dd>{{ profile.bio }}</dd> <dd class="block">
{{ profile.bio_as_html()|safe }}
</dd>
</div> </div>
{% endif %} {% endif %}
</dl> </dl>