Compatibility with Python 3.

This commit is contained in:
Alexandre Silva 2017-03-06 14:16:20 +00:00
parent 87f303c35f
commit 68a8dcd862
6 changed files with 37 additions and 15 deletions

View file

@ -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()

View file

@ -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):

View file

@ -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

View file

@ -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)

View file

@ -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))

View file

@ -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(