diff --git a/wagtail_modeltranslation/apps.py b/wagtail_modeltranslation/apps.py index efbae93..f77efc0 100644 --- a/wagtail_modeltranslation/apps.py +++ b/wagtail_modeltranslation/apps.py @@ -1,4 +1,6 @@ # coding: utf-8 +from __future__ import absolute_import + from django.apps import AppConfig @@ -15,5 +17,5 @@ class ModeltranslationConfig(AppConfig): from modeltranslation.models import handle_translation_registrations handle_translation_registrations() - from patch_wagtailadmin import patch_wagtail_models + from .patch_wagtailadmin import patch_wagtail_models patch_wagtail_models() diff --git a/wagtail_modeltranslation/patch_wagtailadmin.py b/wagtail_modeltranslation/patch_wagtailadmin.py index 468871f..7ab46ca 100644 --- a/wagtail_modeltranslation/patch_wagtailadmin.py +++ b/wagtail_modeltranslation/patch_wagtailadmin.py @@ -390,7 +390,7 @@ def patch_wagtail_models(): # We need to sort the models to ensure that subclasses of a model are registered first, # or else if the panels are inherited all the changes on the subclass would be # reflected in the superclass - registered_models.sort(compare_class_tree_depth) + registered_models.sort(key=compare_class_tree_depth) for model_class in registered_models: if issubclass(model_class, Page) or model_class in get_snippet_models() or issubclass(model_class, BaseSetting): diff --git a/wagtail_modeltranslation/templatetags/wagtail_modeltranslation.py b/wagtail_modeltranslation/templatetags/wagtail_modeltranslation.py index 7ec18b6..ff45021 100644 --- a/wagtail_modeltranslation/templatetags/wagtail_modeltranslation.py +++ b/wagtail_modeltranslation/templatetags/wagtail_modeltranslation.py @@ -5,6 +5,7 @@ import re from django import template from django.core.urlresolvers import resolve from django.utils.translation import activate, get_language +from six import iteritems register = template.Library() @@ -37,7 +38,7 @@ def change_lang(context, lang=None, *args, **kwargs): translated_url = '/' + lang + '/' + path_components[0] + '/' if request.GET: translated_url += '?' - for key, value in request.GET.iteritems(): + for key, value in iteritems(request.GET): translated_url += key + '=' + value return translated_url diff --git a/wagtail_modeltranslation/tests/tests.py b/wagtail_modeltranslation/tests/tests.py index da721d2..e037770 100755 --- a/wagtail_modeltranslation/tests/tests.py +++ b/wagtail_modeltranslation/tests/tests.py @@ -10,7 +10,6 @@ from django.test.utils import override_settings from django.utils.translation import get_language, trans_real from modeltranslation import settings as mt_settings, translator - from wagtail_modeltranslation.tests.test_settings import TEST_SETTINGS models = translation = None @@ -194,7 +193,7 @@ class WagtailModeltranslationTest(WagtailModeltranslationTestBase): self.assertListEqual(['body_de', 'body_en'], fields) # Fetch one of the streamfield panels to see if the block was correctly created - child_block = models.StreamFieldPanelPage.body_en.field.stream_block.child_blocks.items() + child_block = list(models.StreamFieldPanelPage.body_en.field.stream_block.child_blocks.items()) self.assertEquals(len(child_block), 1) @@ -267,7 +266,12 @@ class WagtailModeltranslationTest(WagtailModeltranslationTestBase): page_base_fields = ['slug_de', 'slug_en', 'seo_title_de', 'seo_title_en', 'search_description_de', 'search_description_en', u'show_in_menus', u'go_live_at', u'expire_at'] - self.assertItemsEqual(page_base_fields, form.base_fields.keys()) + try: + # python 3 + self.assertCountEqual(page_base_fields, form.base_fields.keys()) + except AttributeError: + # python 2.7 + self.assertItemsEqual(page_base_fields, form.base_fields.keys()) inline_model_fields = ['field_name_de', 'field_name_en', 'image_chooser_de', 'image_chooser_en', 'fieldrow_name_de', 'fieldrow_name_en', 'name_de', 'name_en', 'image_de', 'image_en', @@ -275,7 +279,12 @@ class WagtailModeltranslationTest(WagtailModeltranslationTestBase): related_formset_form = form.formsets['related_page_model'].form - self.assertItemsEqual(inline_model_fields, related_formset_form.base_fields.keys()) + try: + # python 3 + self.assertCountEqual(inline_model_fields, related_formset_form.base_fields.keys()) + except AttributeError: + # python 2.7 + self.assertItemsEqual(inline_model_fields, related_formset_form.base_fields.keys()) def test_snippet_form(self): """ @@ -293,7 +302,12 @@ class WagtailModeltranslationTest(WagtailModeltranslationTestBase): related_formset_form = form.formsets['related_snippet_model'].form - self.assertItemsEqual(inline_model_fields, related_formset_form.base_fields.keys()) + try: + # python 3 + self.assertCountEqual(inline_model_fields, related_formset_form.base_fields.keys()) + except AttributeError: + # python 2.7 + self.assertItemsEqual(inline_model_fields, related_formset_form.base_fields.keys()) def test_duplicate_slug(self): from wagtail.wagtailcore.models import Site @@ -328,4 +342,9 @@ class WagtailModeltranslationTest(WagtailModeltranslationTestBase): model_search_fields = [searchfield.field_name for searchfield in models.PatchTestPage.search_fields] - self.assertItemsEqual(expected_fields, model_search_fields) + try: + # python 3 + self.assertCountEqual(expected_fields, model_search_fields) + except AttributeError: + # python 2.7 + self.assertItemsEqual(expected_fields, model_search_fields) diff --git a/wagtail_modeltranslation/utils.py b/wagtail_modeltranslation/utils.py index acedf73..ffdf480 100644 --- a/wagtail_modeltranslation/utils.py +++ b/wagtail_modeltranslation/utils.py @@ -2,10 +2,10 @@ import inspect -def compare_class_tree_depth(a, b): +def compare_class_tree_depth(model_class): """ Function to sort a list of class objects, where subclasses have lower indices than their superclasses """ - return len(inspect.getmro(b)) - len(inspect.getmro(a)) + return -len(inspect.getmro(model_class)) diff --git a/wagtail_modeltranslation/wagtail_hooks.py b/wagtail_modeltranslation/wagtail_hooks.py index 8feb506..6e8a7b0 100644 --- a/wagtail_modeltranslation/wagtail_hooks.py +++ b/wagtail_modeltranslation/wagtail_hooks.py @@ -2,12 +2,12 @@ import json -from django.utils.html import format_html, format_html_join from django.conf import settings from django.conf.urls import url -from django.http import QueryDict from django.http import HttpResponse - +from django.http import QueryDict +from django.utils.html import format_html, format_html_join +from six import iteritems from wagtail.wagtailcore import hooks from wagtail.wagtailcore.models import Page @@ -52,7 +52,7 @@ def return_translation_target_field_rendered_html(request, page_id): target_field_patched = [] for item in origin_field_serialized: patched_item = None - for att in item.iteritems(): + for att in iteritems(item): target_value = att[1] if att[0] == 'name': target_value = att[1].replace(