add: CodeMirror 6 в админку и сборка бандла

This commit is contained in:
2026-04-11 21:15:08 +03:00
parent b4b0fe5ea6
commit a301e75cdd
7 changed files with 178 additions and 50 deletions

View File

@@ -79,7 +79,7 @@ class AdminContentForm(forms.ModelForm):
typograph_strip_soft_hyphens = forms.BooleanField(
label='Удалять переносы',
required=False,
initial=False,
initial=True,
help_text='Убирает `&amp;shy;`, `&amp;#173;` и Unicode-символ мягкого переноса<br />'
'перед типографом.',
)
@@ -104,6 +104,7 @@ class AdminContentForm(forms.ModelForm):
fields = '__all__'
class Media:
js = ('codemirror/editor.js',)
css = {
'all': ('css/admin-select2-theme.css',),
}
@@ -128,6 +129,20 @@ class AdminContentForm(forms.ModelForm):
else:
tag_choices = []
codemirror_attrs = {
'data-codemirror-editor': '1',
'data-language': 'html',
}
self.fields['szContentHead'].widget = Textarea(attrs={
'rows': 4,
'cols': 120,
**codemirror_attrs,
})
for field_name in ('szContentHead', 'szContentIntro', 'szContentBody'):
self.fields[field_name].widget.attrs.update(codemirror_attrs)
self.fields['tags'].widget = AjaxCommaSeparatedSelect2TagWidget(
attrs={
'data-ajax--url': reverse('web_tag_autocomplete'),

View File

@@ -1,6 +1,7 @@
from unittest.mock import patch
from django.contrib.auth import get_user_model
from django.forms import Textarea
from django.test import SimpleTestCase, TestCase
from django.urls import reverse
from etpgrf.config import MODE_UNICODE, SANITIZE_ETPGRF
@@ -67,6 +68,22 @@ class AdminTypographFormTests(SimpleTestCase):
self.assertTrue(form.fields['typograph_hyphenation'].initial)
self.assertEqual(form.fields['typograph_sanitizer'].initial, 'None')
def test_admin_form_adds_codemirror_attrs_and_media(self):
form = AdminContentForm()
for field_name in ('szContentHead', 'szContentIntro', 'szContentBody'):
self.assertIsInstance(form.fields[field_name].widget, Textarea)
self.assertEqual(
form.fields[field_name].widget.attrs.get('data-codemirror-editor'),
'1',
)
self.assertEqual(
form.fields[field_name].widget.attrs.get('data-language'),
'html',
)
self.assertIn('codemirror/editor.js', str(form.media))
def test_tbcontent_model_has_no_btypograf_field(self):
self.assertNotIn('bTypograf', [field.name for field in TbContent._meta.fields])