api.py 875 B

1234567891011121314151617181920212223242526272829303132
  1. from rest_framework.decorators import api_view
  2. from rest_framework.response import Response
  3. from rest_framework import serializers
  4. from misago.threads.validators import validate_post_length
  5. from . import common_flavour, finalise_markup
  6. @api_view(['POST'])
  7. def parse_markup(request):
  8. serializer = MarkupSerializer(data=request.data)
  9. if not serializer.is_valid():
  10. return Response(serializer.errors, status=400)
  11. parsing_result = common_flavour(
  12. request,
  13. request.user,
  14. serializer.data['markup'],
  15. force_shva=True,
  16. )
  17. finalised = finalise_markup(parsing_result['parsed_text'])
  18. return Response({'parsed': finalised})
  19. class MarkupSerializer(serializers.Serializer):
  20. markup = serializers.CharField(allow_blank=True)
  21. def validate_markup(self, data):
  22. validate_post_length(data)
  23. return data