fix(openapi): Add proper serialization for TextPreviewView
This commit is contained in:
parent
5081ec8a71
commit
7a81df8ec1
|
@ -359,3 +359,12 @@ class RateLimitSerializer(serializers.Serializer):
|
|||
enabled = serializers.BooleanField()
|
||||
ident = IdentSerializer()
|
||||
scopes = serializers.ListField(child=ScopesSerializer())
|
||||
|
||||
|
||||
class ErrorDetailSerializer(serializers.Serializer):
|
||||
detail = serializers.CharField(source="*")
|
||||
|
||||
|
||||
class TextPreviewSerializer(serializers.Serializer):
|
||||
rendered = serializers.CharField(read_only=True, source="*")
|
||||
text = serializers.CharField(write_only=True)
|
||||
|
|
|
@ -18,6 +18,11 @@ from config import plugins
|
|||
|
||||
from funkwhale_api.users.oauth import permissions as oauth_permissions
|
||||
|
||||
from funkwhale_api.common.serializers import (
|
||||
ErrorDetailSerializer,
|
||||
TextPreviewSerializer,
|
||||
)
|
||||
|
||||
from . import filters
|
||||
from . import models
|
||||
from . import mutations
|
||||
|
@ -205,18 +210,21 @@ class AttachmentViewSet(
|
|||
class TextPreviewView(views.APIView):
|
||||
permission_classes = []
|
||||
|
||||
@extend_schema(operation_id="preview_text")
|
||||
@extend_schema(
|
||||
operation_id="preview_text",
|
||||
responses={200: TextPreviewSerializer, 400: ErrorDetailSerializer},
|
||||
)
|
||||
def post(self, request, *args, **kwargs):
|
||||
payload = request.data
|
||||
if "text" not in payload:
|
||||
return response.Response({"detail": "Invalid input"}, status=400)
|
||||
return response.Response(
|
||||
ErrorDetailSerializer("Invalid input").data, status=400
|
||||
)
|
||||
|
||||
permissive = payload.get("permissive", False)
|
||||
data = {
|
||||
"rendered": utils.render_html(
|
||||
payload["text"], "text/markdown", permissive=permissive
|
||||
)
|
||||
}
|
||||
data = TextPreviewSerializer(
|
||||
utils.render_html(payload["text"], "text/markdown", permissive=permissive)
|
||||
).data
|
||||
return response.Response(data, status=200)
|
||||
|
||||
|
||||
|
|
|
@ -273,6 +273,16 @@ def test_attachment_destroy_not_owner(factories, logged_in_api_client):
|
|||
attachment.refresh_from_db()
|
||||
|
||||
|
||||
def test_render_fails_for_no_text(api_client):
|
||||
payload = {}
|
||||
url = reverse("api:v1:text-preview")
|
||||
response = api_client.post(url, payload)
|
||||
|
||||
expected = {"detail": "Invalid input"}
|
||||
assert response.status_code == 400
|
||||
assert response.data == expected
|
||||
|
||||
|
||||
def test_can_render_text_preview(api_client, db):
|
||||
payload = {"text": "Hello world"}
|
||||
url = reverse("api:v1:text-preview")
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Add proper serialization for TextPreviewView (#1903)
|
Loading…
Reference in New Issue