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.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],
)

View file

@ -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."""

View file

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