Use a form to clean input Markdown data

This commit is contained in:
Jeremy Stretch 2023-03-08 15:02:18 -05:00
parent 4c68d9e9b0
commit 90d81e2421
4 changed files with 24 additions and 5 deletions

View File

@ -2,6 +2,7 @@ from .model_forms import *
from .filtersets import *
from .bulk_edit import *
from .bulk_import import *
from .misc import *
from .mixins import *
from .config import *
from .scripts import *

View File

@ -0,0 +1,14 @@
from django import forms
__all__ = (
'RenderMarkdownForm',
)
class RenderMarkdownForm(forms.Form):
"""
Provides basic validation for markup to be rendered.
"""
text = forms.CharField(
required=False
)

View File

@ -93,5 +93,5 @@ urlpatterns = [
re_path(r'^scripts/(?P<module>.([^.]+)).(?P<name>.(.+))/', views.ScriptView.as_view(), name='script'),
# Markdown
path('render/markdown/', views.MarkdownRenderView.as_view(), name="render_markdown")
path('render/markdown/', views.RenderMarkdownView.as_view(), name="render_markdown")
]

View File

@ -1,7 +1,7 @@
from django.contrib import messages
from django.contrib.contenttypes.models import ContentType
from django.db.models import Count, Q
from django.http import Http404, HttpResponseForbidden, HttpResponse
from django.http import Http404, HttpResponseBadRequest, HttpResponseForbidden, HttpResponse
from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse
from django.views.generic import View
@ -892,8 +892,12 @@ class JobResultBulkDeleteView(generic.BulkDeleteView):
# Markdown
#
class MarkdownRenderView(View):
class RenderMarkdownView(View):
def post(self, request):
raw = request.POST.get("text", "").strip()
rendered = render_markdown(raw)
form = forms.RenderMarkdownForm(request.POST)
if not form.is_valid():
HttpResponseBadRequest()
rendered = render_markdown(form.cleaned_data['text'])
return HttpResponse(rendered)