feat: 🔗 enable markdown in user bio
This commit is contained in:
parent
4a3bb0ec56
commit
fce8aa19ed
3 changed files with 14 additions and 3 deletions
|
|
@ -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],
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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."""
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue