Content of statuses, and notes (bios) of users, are interpreted as markdown

and returned as HTML.
trilby-heavy
Marnanel Thurman 2020-04-25 16:40:06 +01:00
rodzic 42909bb629
commit 3858c95426
5 zmienionych plików z 18 dodań i 5 usunięć

Wyświetl plik

@ -3,6 +3,7 @@ from kepi.trilby_api.models import *
from rest_framework_recursive.fields import RecursiveField
from oauth2_provider.models import Application
import kepi.trilby_api.utils as trilby_utils
import markdown
#########################################
@ -37,6 +38,14 @@ class UserSerializer(serializers.ModelSerializer):
created_at = serializers.DateTimeField(
)
note = serializers.SerializerMethodField()
def get_note(self, user):
result = markdown.markdown(user.note)
return result
def set_note(self, user, note):
user.note = note
note = serializers.CharField(
)
@ -184,13 +193,17 @@ class StatusSerializer(serializers.ModelSerializer):
# "content" is read-only for HTML;
# "status" is write-only for text (or Markdown)
content = serializers.CharField(
content = serializers.SerializerMethodField(
read_only = True)
status = serializers.CharField(
source='source_text',
write_only = True)
def get_content(self, status):
result = markdown.markdown(status.content)
return result
created_at = serializers.DateTimeField(
required = False,
read_only = True)

Wyświetl plik

@ -35,7 +35,7 @@ ACCOUNT_SOURCE_EXPECTED = {
STATUS_EXPECTED = {
'in_reply_to_account_id': None,
'content': 'Hello world.',
'content': '<p>Hello world.</p>',
'emojis': [],
'reblogs_count': 0,
'favourites_count': 0,

Wyświetl plik

@ -116,7 +116,7 @@ class TestNotifications(TrilbyTestCase):
self.assertDictContainsSubset(
{
'id': str(status.id),
'content': 'Curiouser and curiouser!',
'content': '<p>Curiouser and curiouser!</p>',
},
content[0]['status'],
)

Wyświetl plik

@ -646,7 +646,7 @@ class TestGetStatus(TrilbyTestCase):
self.assertEqual(
details['content'],
'Daisies are our silver.',
'<p>Daisies are our silver.</p>',
)
def test_view_specific_status_404(self):

Wyświetl plik

@ -58,7 +58,7 @@ class TestTimelines(TrilbyTestCase):
expected = []
for (id, visibility, visible_in) in TIMELINE_DATA:
if situation in visible_in:
expected.append(id)
expected.append(f'<p>{id}</p>')
expected = sorted(expected)
details = sorted([x['content'] \