kopia lustrzana https://gitlab.com/marnanel/chapeau
Content of statuses, and notes (bios) of users, are interpreted as markdown
and returned as HTML.trilby-heavy
rodzic
42909bb629
commit
3858c95426
|
@ -3,6 +3,7 @@ from kepi.trilby_api.models import *
|
||||||
from rest_framework_recursive.fields import RecursiveField
|
from rest_framework_recursive.fields import RecursiveField
|
||||||
from oauth2_provider.models import Application
|
from oauth2_provider.models import Application
|
||||||
import kepi.trilby_api.utils as trilby_utils
|
import kepi.trilby_api.utils as trilby_utils
|
||||||
|
import markdown
|
||||||
|
|
||||||
#########################################
|
#########################################
|
||||||
|
|
||||||
|
@ -37,6 +38,14 @@ class UserSerializer(serializers.ModelSerializer):
|
||||||
created_at = serializers.DateTimeField(
|
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(
|
note = serializers.CharField(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -184,13 +193,17 @@ class StatusSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
# "content" is read-only for HTML;
|
# "content" is read-only for HTML;
|
||||||
# "status" is write-only for text (or Markdown)
|
# "status" is write-only for text (or Markdown)
|
||||||
content = serializers.CharField(
|
content = serializers.SerializerMethodField(
|
||||||
read_only = True)
|
read_only = True)
|
||||||
|
|
||||||
status = serializers.CharField(
|
status = serializers.CharField(
|
||||||
source='source_text',
|
source='source_text',
|
||||||
write_only = True)
|
write_only = True)
|
||||||
|
|
||||||
|
def get_content(self, status):
|
||||||
|
result = markdown.markdown(status.content)
|
||||||
|
return result
|
||||||
|
|
||||||
created_at = serializers.DateTimeField(
|
created_at = serializers.DateTimeField(
|
||||||
required = False,
|
required = False,
|
||||||
read_only = True)
|
read_only = True)
|
||||||
|
|
|
@ -35,7 +35,7 @@ ACCOUNT_SOURCE_EXPECTED = {
|
||||||
|
|
||||||
STATUS_EXPECTED = {
|
STATUS_EXPECTED = {
|
||||||
'in_reply_to_account_id': None,
|
'in_reply_to_account_id': None,
|
||||||
'content': 'Hello world.',
|
'content': '<p>Hello world.</p>',
|
||||||
'emojis': [],
|
'emojis': [],
|
||||||
'reblogs_count': 0,
|
'reblogs_count': 0,
|
||||||
'favourites_count': 0,
|
'favourites_count': 0,
|
||||||
|
|
|
@ -116,7 +116,7 @@ class TestNotifications(TrilbyTestCase):
|
||||||
self.assertDictContainsSubset(
|
self.assertDictContainsSubset(
|
||||||
{
|
{
|
||||||
'id': str(status.id),
|
'id': str(status.id),
|
||||||
'content': 'Curiouser and curiouser!',
|
'content': '<p>Curiouser and curiouser!</p>',
|
||||||
},
|
},
|
||||||
content[0]['status'],
|
content[0]['status'],
|
||||||
)
|
)
|
||||||
|
|
|
@ -646,7 +646,7 @@ class TestGetStatus(TrilbyTestCase):
|
||||||
|
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
details['content'],
|
details['content'],
|
||||||
'Daisies are our silver.',
|
'<p>Daisies are our silver.</p>',
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_view_specific_status_404(self):
|
def test_view_specific_status_404(self):
|
||||||
|
|
|
@ -58,7 +58,7 @@ class TestTimelines(TrilbyTestCase):
|
||||||
expected = []
|
expected = []
|
||||||
for (id, visibility, visible_in) in TIMELINE_DATA:
|
for (id, visibility, visible_in) in TIMELINE_DATA:
|
||||||
if situation in visible_in:
|
if situation in visible_in:
|
||||||
expected.append(id)
|
expected.append(f'<p>{id}</p>')
|
||||||
expected = sorted(expected)
|
expected = sorted(expected)
|
||||||
|
|
||||||
details = sorted([x['content'] \
|
details = sorted([x['content'] \
|
||||||
|
|
Ładowanie…
Reference in New Issue