From 53ac57e8a61d64b38151cc9e7cf29134ac5ffd11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?aron=20bergur=20j=C3=B3hannsson?= Date: Thu, 2 Mar 2023 22:13:43 +0000 Subject: [PATCH] Add render markdown endpoint --- netbox/extras/urls.py | 2 ++ netbox/extras/views.py | 24 +++++++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/netbox/extras/urls.py b/netbox/extras/urls.py index f41a45f5a..b6ff22a62 100644 --- a/netbox/extras/urls.py +++ b/netbox/extras/urls.py @@ -92,4 +92,6 @@ urlpatterns = [ path('scripts/results//', views.ScriptResultView.as_view(), name='script_result'), re_path(r'^scripts/(?P.([^.]+)).(?P.(.+))/', views.ScriptView.as_view(), name='script'), + # Markdown + path('markdown/', views.MarkdownRenderView.as_view(), name="markdown_render") ] diff --git a/netbox/extras/views.py b/netbox/extras/views.py index 2d2608ae8..f66fc4caa 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -1,7 +1,8 @@ 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 +from django.http import Http404, HttpResponseForbidden, HttpResponse +from django.template import Template, Context from django.shortcuts import get_object_or_404, redirect, render from django.urls import reverse from django.views.generic import View @@ -885,3 +886,24 @@ class JobResultBulkDeleteView(generic.BulkDeleteView): queryset = JobResult.objects.all() filterset = filtersets.JobResultFilterSet table = tables.JobResultTable + + +# +# Markdown +# + +class MarkdownRenderView(View): + # _ignore_model_permissions = True + template_code = """ + {% if text %} + {{ text|markdown }} + {% else %} + — + {% endif %} + """ + + def post(self, request): + context = { + "text": request.POST.get("text", "") + } + return HttpResponse(Template(self.template_code).render(Context(context)).strip())