admin: remove inline JS, add CodeMirror widget for jinja and yaml

This commit is contained in:
Jens Langhammer
2020-05-20 13:00:45 +02:00
parent e08c5ff875
commit c61c84e9f3
7 changed files with 36 additions and 33 deletions

View File

@ -4,6 +4,27 @@ from django import forms
from django.utils.translation import gettext_lazy as _
class CodeMirrorWidget(forms.Textarea):
"""Custom Textarea-based Widget that triggers a CodeMirror editor"""
# CodeMirror mode to enable
mode: str
def __init__(self, *args, mode="yaml", **kwargs):
super().__init__(*args, **kwargs)
self.mode = mode
def render(self, *args, **kwargs):
if "attrs" not in kwargs:
kwargs["attrs"] = {}
attrs = kwargs["attrs"]
if "class" not in attrs:
attrs["class"] = ""
attrs["class"] += " codemirror"
attrs["data-cm-mode"] = self.mode
return super().render(*args, **kwargs)
class InvalidYAMLInput(str):
"""Invalid YAML String type"""