Skip to content

Commit

Permalink
Include cache_suffix tinymce parameter in project's static files
Browse files Browse the repository at this point in the history
  • Loading branch information
Pantzan committed Apr 17, 2024
1 parent eac5cc3 commit da81a43
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 2 deletions.
18 changes: 17 additions & 1 deletion tests/test_widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,22 @@ def test_tinymce_widget_media(self):
],
)

def test_widget_media_applied_cache_suffix(self):
tinymce_version = "6.8"

orig_config = tinymce.settings.DEFAULT_CONFIG
with patch.dict(tinymce.settings.DEFAULT_CONFIG, {**orig_config, "cache_suffix": f"?ver={tinymce_version}"}):
widget = TinyMCE()

self.assertEqual(list(widget.media.render_css()), [])
self.assertEqual(
widget.media.render_js(),
[
f'<script src="/tinymce/compressor/?ver={tinymce_version}"></script>',
f'<script src="/static/django_tinymce/init_tinymce.js?ver={tinymce_version}"></script>'
]
)

def test_tinymce_widget_required(self):
"""
The TinyMCE widget should never output the required HTML attribute, even
Expand All @@ -142,7 +158,7 @@ def test_tinymce_widget_allow_translated_options(self):
orig_config = tinymce.settings.DEFAULT_CONFIG
style_formats = [{"title": gettext_lazy("Awesome style"), "inline": "strong"}]
with patch.dict(
tinymce.settings.DEFAULT_CONFIG, {**orig_config, "style_formats": style_formats}
tinymce.settings.DEFAULT_CONFIG, {**orig_config, "style_formats": style_formats}
):
html = widget.render("foobar", "lorem ipsum", attrs={"id": "id_foobar"})
self.assertIn("Awesome style", html)
14 changes: 13 additions & 1 deletion tinymce/widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
from django.core.serializers.json import DjangoJSONEncoder
from django.forms.utils import flatatt
from django.urls import reverse
from django.utils.html import escape
from django.utils.html import escape, format_html
from django.utils.safestring import mark_safe
from django.utils.translation import get_language, gettext as _, to_locale

Expand Down Expand Up @@ -114,6 +114,18 @@ def _media(self):

media = property(_media)

def _render_js(self):
revision_parameter = tinymce.settings.DEFAULT_CONFIG.get('cache_suffix', '')

return [
format_html(
'<script src="{}{}"></script>',
(self.absolute_path(path)), revision_parameter)
for path in self._js
]

forms.widgets.Media.render_js = _render_js


class AdminTinyMCE(TinyMCE, admin_widgets.AdminTextareaWidget):
pass
Expand Down
1 change: 1 addition & 0 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ deps =
dj50: Django>=5.0,<5.1
djmain: https://github.com/django/django/archive/main.tar.gz
coverage[toml]
pdbpp
usedevelop = True
ignore_outcome =
djmain: True
Expand Down

0 comments on commit da81a43

Please sign in to comment.