From 49246457cb76bb4a3c6f9a51eadf30ec94f01826 Mon Sep 17 00:00:00 2001 From: DiogoMarques Date: Thu, 14 Jun 2018 11:20:12 +0100 Subject: [PATCH 1/7] Hide old fields for snippets without panels defenition --- .../patch_wagtailadmin.py | 18 ++++++--- wagtail_modeltranslation/tests/models.py | 6 ++- wagtail_modeltranslation/tests/tests.py | 28 ++++++++++++-- wagtail_modeltranslation/tests/translation.py | 38 ++++++++++++++----- 4 files changed, 70 insertions(+), 20 deletions(-) diff --git a/wagtail_modeltranslation/patch_wagtailadmin.py b/wagtail_modeltranslation/patch_wagtailadmin.py index 5036c85..8769d32 100644 --- a/wagtail_modeltranslation/patch_wagtailadmin.py +++ b/wagtail_modeltranslation/patch_wagtailadmin.py @@ -17,10 +17,12 @@ from modeltranslation.translator import translator, NotRegistered from modeltranslation.utils import build_localized_fieldname, get_language from wagtail.contrib.settings.models import BaseSetting from wagtail.contrib.settings.views import get_setting_edit_handler + try: from wagtail.contrib.routable_page.models import RoutablePageMixin from wagtail.admin.edit_handlers import FieldPanel, \ - MultiFieldPanel, FieldRowPanel, InlinePanel, StreamFieldPanel, RichTextFieldPanel + MultiFieldPanel, FieldRowPanel, InlinePanel, StreamFieldPanel, RichTextFieldPanel,\ + extract_panel_definitions_from_model_class from wagtail.core.models import Page, Site from wagtail.core.fields import StreamField, StreamValue from wagtail.core.url_routing import RouteResult @@ -31,7 +33,8 @@ try: except ImportError: from wagtail.contrib.wagtailroutablepage.models import RoutablePageMixin from wagtail.wagtailadmin.edit_handlers import FieldPanel, \ - MultiFieldPanel, FieldRowPanel, InlinePanel, StreamFieldPanel, RichTextFieldPanel + MultiFieldPanel, FieldRowPanel, InlinePanel, StreamFieldPanel, RichTextFieldPanel,\ + extract_panel_definitions_from_model_class from wagtail.wagtailcore.models import Page, Site from wagtail.wagtailcore.fields import StreamField, StreamValue from wagtail.wagtailcore.url_routing import RouteResult @@ -137,11 +140,14 @@ class WagtailTranslator(object): tab.children = self._patch_panels(tab.children) elif hasattr(model, 'panels'): model.panels = self._patch_panels(model.panels) - - if model in get_snippet_models() and model in SNIPPET_EDIT_HANDLERS: - del SNIPPET_EDIT_HANDLERS[model] else: - get_setting_edit_handler.cache_clear() + from wagtail.wagtailadmin.edit_handlers import ObjectList + panels = extract_panel_definitions_from_model_class(model) + translation_registered_fields = translator.get_options_for_model(model).fields + panels = filter(lambda field: field.field_name not in translation_registered_fields, panels) + edit_handler = ObjectList(panels) + + SNIPPET_EDIT_HANDLERS[model] = edit_handler.bind_to_model(model) def _patch_panels(self, panels_list, related_model=None): """ diff --git a/wagtail_modeltranslation/tests/models.py b/wagtail_modeltranslation/tests/models.py index 95885d3..8ae8e18 100755 --- a/wagtail_modeltranslation/tests/models.py +++ b/wagtail_modeltranslation/tests/models.py @@ -52,9 +52,13 @@ class PatchTestPage(WagtailPage): @register_snippet -class PatchTestSnippet(models.Model): +class PatchTestSnippetNoPanels(models.Model): name = models.CharField(max_length=10) + +@register_snippet +class PatchTestSnippet(PatchTestSnippetNoPanels): + panels = [ FieldPanel('name') ] diff --git a/wagtail_modeltranslation/tests/tests.py b/wagtail_modeltranslation/tests/tests.py index 6fe2ea4..67e8318 100755 --- a/wagtail_modeltranslation/tests/tests.py +++ b/wagtail_modeltranslation/tests/tests.py @@ -12,6 +12,10 @@ from django.test.client import RequestFactory from django.test.utils import override_settings from django.utils.translation import get_language, trans_real from modeltranslation import settings as mt_settings, translator +try: + from wagtail.snippets.views.snippets import get_snippet_edit_handler +except ImportError: + from wagtail.wagtailsnippets.views.snippets import get_snippet_edit_handler try: from wagtail import VERSION except ImportError: @@ -308,6 +312,8 @@ class WagtailModeltranslationTest(WagtailModeltranslationTestBase): def test_snippet_patching(self): self.check_fieldpanel_patching(panels=models.FieldPanelSnippet.panels) + self.check_panels_patching(models.FieldPanelSnippet, ['name_de', 'name_en']) + self.check_imagechooserpanel_patching(panels=models.ImageChooserPanelSnippet.panels) self.check_fieldrowpanel_patching(panels=models.FieldRowPanelSnippet.panels) self.check_streamfieldpanel_patching(panels=models.StreamFieldPanelSnippet.panels) @@ -317,6 +323,24 @@ class WagtailModeltranslationTest(WagtailModeltranslationTestBase): # which is the SnippetInlineModel self.check_inlinepanel_patching(panels=models.SnippetInlineModel.panels) + # Case we don't define panels on snippet + self.check_panels_patching(models.PatchTestSnippetNoPanels, ['name_de', 'name_en']) + + def check_panels_patching(self, model, model_fields): + patched_edit_handler = get_snippet_edit_handler(model) + + if VERSION[0] < 2: + form = patched_edit_handler.get_form_class(model) + else: + form = patched_edit_handler.get_form_class() + + try: + # python 3 + self.assertEqual(model_fields, list(form.base_fields.keys())) + except AttributeError: + # python 2.7 + self.assertItemsEqual(model_fields, form.base_fields.keys()) + def test_page_form(self): """ In this test we use the InlinePanelPage model because it has all the possible "patchable" fields @@ -358,10 +382,6 @@ class WagtailModeltranslationTest(WagtailModeltranslationTestBase): In this test we use the InlinePanelSnippet model because it has all the possible "patchable" fields so if the created form has all fields the the form was correctly patched """ - try: - from wagtail.snippets.views.snippets import get_snippet_edit_handler - except ImportError: - from wagtail.wagtailsnippets.views.snippets import get_snippet_edit_handler snippet_edit_handler = get_snippet_edit_handler(models.InlinePanelSnippet) if VERSION[0] < 2: diff --git a/wagtail_modeltranslation/tests/translation.py b/wagtail_modeltranslation/tests/translation.py index 6eb4954..abcb4ef 100755 --- a/wagtail_modeltranslation/tests/translation.py +++ b/wagtail_modeltranslation/tests/translation.py @@ -1,12 +1,29 @@ # coding: utf-8 -from modeltranslation.translator import translator, register, TranslationOptions - -from wagtail_modeltranslation.tests.models import TestRootPage, TestSlugPage1, TestSlugPage2, PatchTestPage, \ - PatchTestSnippet, FieldPanelPage, ImageChooserPanelPage, FieldRowPanelPage, MultiFieldPanelPage, InlinePanelPage, \ - FieldPanelSnippet, ImageChooserPanelSnippet, FieldRowPanelSnippet, MultiFieldPanelSnippet, PageInlineModel, \ - BaseInlineModel, StreamFieldPanelPage, StreamFieldPanelSnippet, SnippetInlineModel, InlinePanelSnippet, \ - TestSlugPage1Subclass, RoutablePageTest +from modeltranslation.translator import (TranslationOptions, register, + translator) +from wagtail_modeltranslation.tests.models import (BaseInlineModel, + FieldPanelPage, + FieldPanelSnippet, + FieldRowPanelPage, + FieldRowPanelSnippet, + ImageChooserPanelPage, + ImageChooserPanelSnippet, + InlinePanelPage, + InlinePanelSnippet, + MultiFieldPanelPage, + MultiFieldPanelSnippet, + PageInlineModel, + PatchTestPage, + PatchTestSnippet, + PatchTestSnippetNoPanels, + RoutablePageTest, + SnippetInlineModel, + StreamFieldPanelPage, + StreamFieldPanelSnippet, + TestRootPage, TestSlugPage1, + TestSlugPage1Subclass, + TestSlugPage2) # Wagtail Models @@ -35,11 +52,14 @@ class PatchTestPageTranslationOptions(TranslationOptions): fields = ('description',) -class PatchTestSnippetTranslationOptions(TranslationOptions): +@register(PatchTestSnippetNoPanels) +class PatchTestSnippetNoPanelsTranslationOptions(TranslationOptions): fields = ('name',) -translator.register(PatchTestSnippet, PatchTestSnippetTranslationOptions) +@register(PatchTestSnippet) +class PatchTestSnippetTranslationOptions(TranslationOptions): + pass # Panel Patching Models From 7929589e7a19e7437a1d5b972f1a1f9ed151cd9d Mon Sep 17 00:00:00 2001 From: DiogoMarques Date: Thu, 14 Jun 2018 11:27:06 +0100 Subject: [PATCH 2/7] Hotfix: import for wagtail >= 2.0 --- wagtail_modeltranslation/patch_wagtailadmin.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/wagtail_modeltranslation/patch_wagtailadmin.py b/wagtail_modeltranslation/patch_wagtailadmin.py index 8769d32..98470e8 100644 --- a/wagtail_modeltranslation/patch_wagtailadmin.py +++ b/wagtail_modeltranslation/patch_wagtailadmin.py @@ -22,7 +22,7 @@ try: from wagtail.contrib.routable_page.models import RoutablePageMixin from wagtail.admin.edit_handlers import FieldPanel, \ MultiFieldPanel, FieldRowPanel, InlinePanel, StreamFieldPanel, RichTextFieldPanel,\ - extract_panel_definitions_from_model_class + extract_panel_definitions_from_model_class, ObjectList from wagtail.core.models import Page, Site from wagtail.core.fields import StreamField, StreamValue from wagtail.core.url_routing import RouteResult @@ -34,7 +34,7 @@ except ImportError: from wagtail.contrib.wagtailroutablepage.models import RoutablePageMixin from wagtail.wagtailadmin.edit_handlers import FieldPanel, \ MultiFieldPanel, FieldRowPanel, InlinePanel, StreamFieldPanel, RichTextFieldPanel,\ - extract_panel_definitions_from_model_class + extract_panel_definitions_from_model_class, ObjectList from wagtail.wagtailcore.models import Page, Site from wagtail.wagtailcore.fields import StreamField, StreamValue from wagtail.wagtailcore.url_routing import RouteResult @@ -141,7 +141,6 @@ class WagtailTranslator(object): elif hasattr(model, 'panels'): model.panels = self._patch_panels(model.panels) else: - from wagtail.wagtailadmin.edit_handlers import ObjectList panels = extract_panel_definitions_from_model_class(model) translation_registered_fields = translator.get_options_for_model(model).fields panels = filter(lambda field: field.field_name not in translation_registered_fields, panels) From 531a7494c24f13cf25ca5e4ec6b6621d0cf833de Mon Sep 17 00:00:00 2001 From: DiogoMarques Date: Thu, 21 Jun 2018 12:10:17 +0100 Subject: [PATCH 3/7] Adds setting to translate slugs (default True) --- docs/advanced settings.rst | 12 +++++++++++ .../patch_wagtailadmin.py | 21 ++++++++++--------- wagtail_modeltranslation/settings.py | 1 + wagtail_modeltranslation/tests/settings.py | 2 ++ wagtail_modeltranslation/translation.py | 20 ++++++++++++------ 5 files changed, 40 insertions(+), 16 deletions(-) diff --git a/docs/advanced settings.rst b/docs/advanced settings.rst index e7a1f43..a5d32b5 100644 --- a/docs/advanced settings.rst +++ b/docs/advanced settings.rst @@ -28,3 +28,15 @@ This setting behaves as the above but should be used for panels that are compose .. code-block:: python WAGTAILMODELTRANSLATION_CUSTOM_COMPOSED_PANELS = ['app_x.module_y.PanelZ'] + + +``WAGTAILMODELTRANSLATION_TRANSLATE_SLUGS`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Default: ``True`` + +This setting makes slug and url_path localized. If True, each page will have a slug and url_path per language. + +.. code-block:: python + + WAGTAILMODELTRANSLATION_TRANSLATE_SLUGS = True diff --git a/wagtail_modeltranslation/patch_wagtailadmin.py b/wagtail_modeltranslation/patch_wagtailadmin.py index 5036c85..92935aa 100644 --- a/wagtail_modeltranslation/patch_wagtailadmin.py +++ b/wagtail_modeltranslation/patch_wagtailadmin.py @@ -46,7 +46,7 @@ except ImportError: from wagtail.wagtailcore.utils import WAGTAIL_APPEND_SLASH except ImportError: WAGTAIL_APPEND_SLASH = True # Wagtail<1.5 -from wagtail_modeltranslation.settings import CUSTOM_SIMPLE_PANELS, CUSTOM_COMPOSED_PANELS +from wagtail_modeltranslation.settings import CUSTOM_SIMPLE_PANELS, CUSTOM_COMPOSED_PANELS, TRANSLATE_SLUGS from wagtail_modeltranslation.utils import compare_class_tree_depth logger = logging.getLogger('wagtail.core') @@ -119,16 +119,17 @@ class WagtailTranslator(object): _patch_stream_field_meaningful_value(descriptor) # OVERRIDE PAGE METHODS - model.set_url_path = _new_set_url_path - model.route = _new_route - model._update_descendant_url_paths = _new_update_descendant_url_paths - if not hasattr(model, '_get_site_root_paths'): - model.get_url_parts = _new_get_url_parts # Wagtail<1.11 - model._get_site_root_paths = _new_get_site_root_paths - _patch_clean(model) + if TRANSLATE_SLUGS: + model.set_url_path = _new_set_url_path + model.route = _new_route + model._update_descendant_url_paths = _new_update_descendant_url_paths + if not hasattr(model, '_get_site_root_paths'): + model.get_url_parts = _new_get_url_parts # Wagtail<1.11 + model._get_site_root_paths = _new_get_site_root_paths + _patch_clean(model) - if not model.save.__name__.startswith('localized'): - setattr(model, 'save', LocalizedSaveDescriptor(model.save)) + if not model.save.__name__.startswith('localized'): + setattr(model, 'save', LocalizedSaveDescriptor(model.save)) def _patch_other_models(self, model): if hasattr(model, 'edit_handler'): diff --git a/wagtail_modeltranslation/settings.py b/wagtail_modeltranslation/settings.py index c3eadf8..d777651 100644 --- a/wagtail_modeltranslation/settings.py +++ b/wagtail_modeltranslation/settings.py @@ -10,3 +10,4 @@ CUSTOM_SIMPLE_PANELS = [import_from_string(panel_class) for panel_class in getattr(settings, 'WAGTAILMODELTRANSLATION_CUSTOM_SIMPLE_PANELS', [])] CUSTOM_COMPOSED_PANELS = [import_from_string(panel_class) for panel_class in getattr(settings, 'WAGTAILMODELTRANSLATION_CUSTOM_COMPOSED_PANELS', [])] +TRANSLATE_SLUGS = getattr(settings, 'WAGTAILMODELTRANSLATION_TRANSLATE_SLUGS', True) diff --git a/wagtail_modeltranslation/tests/settings.py b/wagtail_modeltranslation/tests/settings.py index 0c50767..b8d06c8 100755 --- a/wagtail_modeltranslation/tests/settings.py +++ b/wagtail_modeltranslation/tests/settings.py @@ -21,3 +21,5 @@ MODELTRANSLATION_AUTO_POPULATE = False MODELTRANSLATION_FALLBACK_LANGUAGES = {'default': (MODELTRANSLATION_DEFAULT_LANGUAGE,)} ROOT_URLCONF = 'wagtail_modeltranslation.tests.urls' + +TRANSLATE_SLUGS = True diff --git a/wagtail_modeltranslation/translation.py b/wagtail_modeltranslation/translation.py index 8b9538a..2511f8f 100644 --- a/wagtail_modeltranslation/translation.py +++ b/wagtail_modeltranslation/translation.py @@ -2,17 +2,25 @@ from modeltranslation.decorators import register from modeltranslation.translator import TranslationOptions +from wagtail_modeltranslation import settings try: from wagtail.core.models import Page except ImportError: from wagtail.wagtailcore.models import Page -@register(Page) -class PageTR(TranslationOptions): - fields = ( - 'title', + +fields = ( + 'title', + 'seo_title', + 'search_description', +) +if settings.TRANSLATE_SLUGS: + fields += ( 'slug', - 'seo_title', - 'search_description', 'url_path', ) + + +@register(Page) +class PageTR(TranslationOptions): + fields = fields From e84cdc6acb4064fdf06480bf65e372a693f6f885 Mon Sep 17 00:00:00 2001 From: nulopes Date: Tue, 26 Jun 2018 11:46:46 +0000 Subject: [PATCH 4/7] Update README.rst Fixes #193 --- README.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/README.rst b/README.rst index 2c146e8..5dd37d1 100755 --- a/README.rst +++ b/README.rst @@ -58,6 +58,7 @@ Quick start ... 'wagtail_modeltranslation', 'wagtail_modeltranslation.makemigrations', + 'wagtail_modeltranslation.migrate', ) 3. Add 'django.middleware.locale.LocaleMiddleware' to ``MIDDLEWARE`` on your ``settings.py``:: From f7d748b7ee32e0b9d3fb83638134d969db4e50f9 Mon Sep 17 00:00:00 2001 From: DiogoMarques Date: Tue, 21 Aug 2018 14:20:10 +0100 Subject: [PATCH 5/7] Moving translatable Page fields definition to the class --- wagtail_modeltranslation/translation.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/wagtail_modeltranslation/translation.py b/wagtail_modeltranslation/translation.py index 2511f8f..82a1266 100644 --- a/wagtail_modeltranslation/translation.py +++ b/wagtail_modeltranslation/translation.py @@ -9,18 +9,16 @@ except ImportError: from wagtail.wagtailcore.models import Page -fields = ( - 'title', - 'seo_title', - 'search_description', -) -if settings.TRANSLATE_SLUGS: - fields += ( - 'slug', - 'url_path', - ) - @register(Page) class PageTR(TranslationOptions): - fields = fields + fields = ( + 'title', + 'seo_title', + 'search_description', + ) + if settings.TRANSLATE_SLUGS: + fields += ( + 'slug', + 'url_path', + ) From 54a27292833c1f8f8e4ccd7f129cf2ab702d7f91 Mon Sep 17 00:00:00 2001 From: DiogoMarques Date: Tue, 21 Aug 2018 15:08:23 +0100 Subject: [PATCH 6/7] Droped python version 3.3 and added 3.6 --- .travis.yml | 3 --- setup.py | 4 +-- tox.ini | 76 ++++++++++++++++++++++++----------------------------- 3 files changed, 36 insertions(+), 47 deletions(-) diff --git a/.travis.yml b/.travis.yml index 15e53fc..8b486ec 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,8 +24,6 @@ matrix: env: WAGTAIL="wagtail>=1.10,<1.11" - python: "3.5" env: WAGTAIL="wagtail>=1.9,<1.10" - - python: "3.3" # Wagtail 1.9 was the latest tested against 3.3 - env: WAGTAIL="wagtail>=1.9,<1.10" - python: "3.5" env: WAGTAIL="wagtail>=1.8,<1.9" - python: "3.5" @@ -41,7 +39,6 @@ install: - pip install --upgrade -q pip setuptools - if [[ $DB == mysql ]] && [[ ${TRAVIS_PYTHON_VERSION:0:1} == "2" ]]; then pip install -q mysql-python; elif [[ $DB == mysql ]] && [[ ${TRAVIS_PYTHON_VERSION:0:1} == "3" ]]; then pip install -q mysqlclient; fi - if [[ $DB == postgres ]]; then pip install -q psycopg2; fi - - if [[ $TRAVIS_PYTHON_VERSION == '3.3' ]]; then pip install 'Django>=1.8,<1.9'; fi - pip install $WAGTAIL - pip install -e . script: diff --git a/setup.py b/setup.py index 9606ab7..d295db0 100755 --- a/setup.py +++ b/setup.py @@ -52,9 +52,9 @@ setup( 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.2', - 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', + 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', 'Operating System :: OS Independent', 'Environment :: Web Environment', 'Intended Audience :: Developers', diff --git a/tox.ini b/tox.ini index 4a4ec36..d77b81d 100644 --- a/tox.ini +++ b/tox.ini @@ -1,34 +1,39 @@ [tox] envlist = + py36-1.9.X, py35-1.9.X, py34-1.9.X, - py33-1.9.X, py27-1.9.X, + py36-1.8.X, py35-1.8.X, py34-1.8.X, - py33-1.8.X, py27-1.8.X, + py36-1.7.X, py35-1.7.X, py34-1.7.X, - py33-1.7.X, py27-1.7.X, + py36-1.6.X, py35-1.6.X, py34-1.6.X, - py33-1.6.X, py27-1.6.X, + py36-1.5.X, py35-1.5.X, py34-1.5.X, - py33-1.5.X, py27-1.5.X, + py36-1.4.X, py35-1.4.X, py34-1.4.X, - py33-1.4.X, py27-1.4.X, [testenv] commands = {envpython} runtests.py +[testenv:py36-1.9.X] +basepython = python3.6 +deps = + wagtail>=1.9,<1.10 + [testenv:py35-1.9.X] basepython = python3.5 deps = @@ -39,17 +44,16 @@ basepython = python3.4 deps = wagtail>=1.9,<1.10 -[testenv:py33-1.9.X] -basepython = python3.3 -deps = - Django>=1.8,<1.9 - wagtail>=1.9,<1.10 - [testenv:py27-1.9.X] basepython = python2.7 deps = wagtail>=1.9,<1.10 +[testenv:py36-1.8.X] +basepython = python3.6 +deps = + wagtail>=1.8,<1.9 + [testenv:py35-1.8.X] basepython = python3.5 deps = @@ -60,17 +64,15 @@ basepython = python3.4 deps = wagtail>=1.8,<1.9 -[testenv:py33-1.8.X] -basepython = python3.3 -deps = - Django>=1.8,<1.9 - wagtail>=1.8,<1.9 - [testenv:py27-1.8.X] basepython = python2.7 deps = wagtail>=1.8,<1.9 +[testenv:py36-1.7.X] +basepython = python3.6 +deps = + wagtail>=1.7,<1.8 [testenv:py35-1.7.X] basepython = python3.5 @@ -82,17 +84,15 @@ basepython = python3.4 deps = wagtail>=1.7,<1.8 -[testenv:py33-1.7.X] -basepython = python3.3 -deps = - Django>=1.8,<1.9 - wagtail>=1.7,<1.8 - [testenv:py27-1.7.X] basepython = python2.7 deps = wagtail>=1.7,<1.8 +[testenv:py36-1.6.X] +basepython = python3.6 +deps = + wagtail>=1.6,<1.7 [testenv:py35-1.6.X] basepython = python3.5 @@ -104,17 +104,16 @@ basepython = python3.4 deps = wagtail>=1.6,<1.7 -[testenv:py33-1.6.X] -basepython = python3.3 -deps = - Django>=1.8,<1.9 - wagtail>=1.6,<1.7 - [testenv:py27-1.6.X] basepython = python2.7 deps = wagtail>=1.6,<1.7 +[testenv:py36-1.5.X] +basepython = python3.6 +deps = + wagtail>=1.5,<1.6 + [testenv:py35-1.5.X] basepython = python3.5 deps = @@ -125,17 +124,16 @@ basepython = python3.4 deps = wagtail>=1.5,<1.6 -[testenv:py33-1.5.X] -basepython = python3.3 -deps = - Django>=1.8,<1.9 - wagtail>=1.5,<1.6 - [testenv:py27-1.5.X] basepython = python2.7 deps = wagtail>=1.5,<1.6 +[testenv:py36-1.4.X] +basepython = python3.6 +deps = + wagtail>=1.4,<1.5 + [testenv:py35-1.4.X] basepython = python3.5 deps = @@ -146,12 +144,6 @@ basepython = python3.4 deps = wagtail>=1.4,<1.5 -[testenv:py33-1.4.X] -basepython = python3.3 -deps = - Django>=1.8,<1.9 - wagtail>=1.4,<1.5 - [testenv:py27-1.4.X] basepython = python2.7 deps = From 4614b5faa4fec451add2cf9d3f298724ed00e6c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0odek?= Date: Wed, 12 Dec 2018 19:09:56 +0100 Subject: [PATCH 7/7] Fix diacritics downcoding in slugs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This change correctly downcodes diacritics to ASCII if user has WAGTAIL_ALLOW_UNICODE_SLUGS = False (e.g. abčďéfg -> abcdefg) Without this change, the slug simply strips all diacritics which is not ideal (e.g. abčďěfg -> abfg) --- .../wagtail_modeltranslation/js/wagtail_translated_slugs.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wagtail_modeltranslation/static/wagtail_modeltranslation/js/wagtail_translated_slugs.js b/wagtail_modeltranslation/static/wagtail_modeltranslation/js/wagtail_translated_slugs.js index 5b60bd1..80c8e1a 100644 --- a/wagtail_modeltranslation/static/wagtail_modeltranslation/js/wagtail_translated_slugs.js +++ b/wagtail_modeltranslation/static/wagtail_modeltranslation/js/wagtail_translated_slugs.js @@ -8,13 +8,13 @@ $(document).ready(function () { $('#id_title_' + lang_code).on('focus', function () { /* slug should only follow the title field if its value matched the title's value at the time of focus */ var currentSlug = $('#id_slug_' + lang_code).val(); - var slugifiedTitle = cleanForSlug(this.value); + var slugifiedTitle = cleanForSlug(this.value, true); slugFollowsTitle = (currentSlug == slugifiedTitle); }); $('#id_title_' + lang_code).on('keyup keydown keypress blur', function () { if (slugFollowsTitle) { - var slugifiedTitle = cleanForSlug(this.value); + var slugifiedTitle = cleanForSlug(this.value, true); $('#id_slug_' + lang_code).val(slugifiedTitle); } });