Ensure absolute_import, unicode_literals imported in all files

Drone will now check that

    from __future__ absolute_import, unicode_literals

is part of every Python source file, to ensure a consistent experience
across all versions of Python.

See #2392 for an instance where missing `unicode_literals` was causing
problems.

Add missing absolute_import, unicode_literals to all files

Explicitly ensure strings are of the correct types

Now that unicode_literals is in every file, some things that used to
be py2 `str`s were now `unicode` instead. This caused issues with
generated class / function names, which must be `str` in all versions of
Python. This means bytes in py2, and unicode in py3. A test also checked
for the incorrect type of SafeString. HTML content should always be
unicode, so this has been fixed.
pull/2418/merge
Tim Heap 2016-03-29 09:45:35 +11:00 zatwierdzone przez Mikalai Radchuk
rodzic 4499a859ba
commit a0af3d6685
317 zmienionych plików z 602 dodań i 77 usunięć

Wyświetl plik

@ -4,3 +4,5 @@ universal = 1
[isort]
line_length=100
multi_line_output=4
skip=migrations
add_imports=from __future__ import absolute_import,from __future__ import unicode_literals

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.apps import AppConfig, apps
from django.conf import settings
from django.core.exceptions import ImproperlyConfigured

Wyświetl plik

@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import, unicode_literals
from collections import OrderedDict

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.conf import settings
from rest_framework.filters import BaseFilterBackend
from taggit.managers import _TaggableManager

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from collections import OrderedDict
from django.conf import settings

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
import functools
from django.conf.urls import include, url

Wyświetl plik

@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import, unicode_literals
from collections import OrderedDict
@ -393,7 +393,7 @@ def get_serializer_class(model_, fields_, meta_fields=None, base=BaseSerializer)
model = model_
fields = base.default_fields + list(fields_)
return type(model_.__name__ + 'Serializer', (base, ), {
return type(str(model_.__name__ + 'Serializer'), (base, ), {
'Meta': Meta,
'meta_fields': base.meta_fields + list(meta_fields or []),
})

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.core.urlresolvers import reverse
from django.db.models.signals import post_delete, post_save

Wyświetl plik

@ -1,4 +1,4 @@
from __future__ import unicode_literals
from __future__ import absolute_import, unicode_literals
import json

Wyświetl plik

@ -1,4 +1,4 @@
from __future__ import unicode_literals
from __future__ import absolute_import, unicode_literals
import json

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
import collections
import json

Wyświetl plik

@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import, unicode_literals
from django.conf.urls import url

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.conf import settings
from django.utils.six.moves.urllib.parse import urlparse

Wyświetl plik

@ -1,5 +1,5 @@
#!/usr/bin/env python
from __future__ import absolute_import, print_function
from __future__ import absolute_import, print_function, unicode_literals
import os
from optparse import OptionParser

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.apps import AppConfig

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.utils.encoding import python_2_unicode_compatible
from .registry import registry

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.db import models
from .registry import register_setting

Wyświetl plik

@ -1,3 +1,6 @@
from __future__ import absolute_import, unicode_literals
def user_can_edit_setting_type(user, model):
""" Check if a user has permission to edit this setting type """
return user.has_perm("{}.change_{}".format(

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.apps import apps
from django.contrib.auth.models import Permission
from django.core.urlresolvers import reverse

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.template import Library
from wagtail.wagtailcore.models import Site

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.core.urlresolvers import reverse
from django.test import TestCase

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.template import Context, RequestContext, Template
from django.test import TestCase

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.conf.urls import url
from . import views

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.core.exceptions import PermissionDenied
from django.http import Http404
from django.shortcuts import get_object_or_404, redirect, render

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.conf.urls import include, url
from wagtail.wagtailcore import hooks

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.apps import AppConfig, apps
from django.conf import settings
from django.core.exceptions import ImproperlyConfigured

Wyświetl plik

@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import, unicode_literals
from collections import OrderedDict

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.conf import settings
from rest_framework.filters import BaseFilterBackend
from taggit.managers import _TaggableManager

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from collections import OrderedDict
from django.conf import settings

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
import functools
from django.conf.urls import include, url

Wyświetl plik

@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import, unicode_literals
from collections import OrderedDict
@ -284,6 +284,6 @@ def get_serializer_class(model_, fields_, base=BaseSerializer):
model = model_
fields = fields_
return type(model_.__name__ + 'Serializer', (base, ), {
return type(str(model_.__name__ + 'Serializer'), (base, ), {
'Meta': Meta
})

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.core.urlresolvers import reverse
from django.db.models.signals import post_delete, post_save

Wyświetl plik

@ -1,4 +1,4 @@
from __future__ import unicode_literals
from __future__ import absolute_import, unicode_literals
import json

Wyświetl plik

@ -1,4 +1,4 @@
from __future__ import unicode_literals
from __future__ import absolute_import, unicode_literals
import json

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
import collections
import json

Wyświetl plik

@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import, unicode_literals
from django.conf.urls import url

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.conf import settings
from django.utils.six.moves.urllib.parse import urlparse

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.apps import AppConfig
from wagtail.contrib.wagtailfrontendcache.signal_handlers import register_signal_handlers

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
import json
import logging

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.apps import apps
from wagtail.contrib.wagtailfrontendcache.utils import purge_page_from_cache

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.test import TestCase
from django.test.utils import override_settings

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
import logging
from django.conf import settings

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.apps import AppConfig

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django_medusa.renderers import StaticSiteRenderer
from wagtail.wagtailcore.models import Site
from wagtail.wagtaildocs.models import Document

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.apps import AppConfig

Wyświetl plik

@ -1,4 +1,4 @@
from __future__ import unicode_literals
from __future__ import absolute_import, unicode_literals
from django.conf.urls import url
from django.core.urlresolvers import RegexURLResolver

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django import template
register = template.Library()

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.core.urlresolvers import NoReverseMatch
from django.test import RequestFactory, TestCase

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.conf.urls import url
from wagtail.contrib.wagtailsearchpromotions import views

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.apps import AppConfig

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django import forms
from django.forms.models import inlineformset_factory
from django.utils.translation import ugettext_lazy as _

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.db import models
from django.utils.translation import ugettext_lazy as _

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django import template
from wagtail.contrib.wagtailsearchpromotions.models import SearchPromotion

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.core.urlresolvers import reverse
from django.test import TestCase

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.core.urlresolvers import reverse
from django.shortcuts import get_object_or_404, redirect, render
from django.utils.translation import ugettext as _

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.conf.urls import include, url
from django.contrib.auth.models import Permission
from django.core import urlresolvers

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.apps import AppConfig

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.template.loader import render_to_string

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.core.cache import cache
from django.test import TestCase

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.conf import settings
from django.core.cache import cache
from django.http import HttpResponse

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.apps import AppConfig

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.core.urlresolvers import reverse
from django.test import TestCase

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django import forms
from django.core.paginator import Paginator
from django.shortcuts import render

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.conf.urls import url
from django.core import urlresolvers
from django.utils.translation import ugettext_lazy as _

Wyświetl plik

@ -1,4 +1,4 @@
from __future__ import unicode_literals
from __future__ import absolute_import, unicode_literals
from django.db import models

Wyświetl plik

@ -1,4 +1,6 @@
#!/usr/bin/env python
from __future__ import absolute_import, unicode_literals
import os
import sys

Wyświetl plik

@ -10,6 +10,8 @@ For the full list of settings and their values, see
https://docs.djangoproject.com/en/{{ docs_version }}/ref/settings/
"""
from __future__ import absolute_import, unicode_literals
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from .base import *
# SECURITY WARNING: don't run with debug turned on in production!

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from .base import *
DEBUG = False

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.conf import settings
from django.conf.urls import include, url
from django.contrib import admin

Wyświetl plik

@ -7,6 +7,8 @@ For more information on this file, see
https://docs.djangoproject.com/en/{{ docs_version }}/howto/deployment/wsgi/
"""
from __future__ import absolute_import, unicode_literals
import os
from django.core.wsgi import get_wsgi_application

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
from django.shortcuts import render

Wyświetl plik

@ -1,3 +1,6 @@
from __future__ import absolute_import, unicode_literals
def do_not_use_static_url(request):
def exception():
raise Exception("Do not use STATIC_URL in templates. Use the {% static %} templatetag instead.")

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
import sys
from django.contrib.auth.models import (

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from datetime import date
from django.db import models

Wyświetl plik

@ -5,6 +5,8 @@
# - Calling .path on the storage or image file raises NotImplementedError
# - File.open() after the file has been closed raises an error
from __future__ import absolute_import, unicode_literals
from django.core.files.base import File
from django.core.files.storage import FileSystemStorage, Storage
from django.utils.deconstruct import deconstructible

Wyświetl plik

@ -1,6 +1,8 @@
"""An alternative urlconf module where Wagtail front-end URLs
are rooted at '/site/' rather than '/'"""
from __future__ import absolute_import, unicode_literals
from django.conf.urls import include, url
from wagtail.wagtailadmin import urls as wagtailadmin_urls

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.apps import AppConfig

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.http import HttpResponse
from wagtail.contrib.wagtailroutablepage.models import RoutablePage, route

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.apps import AppConfig

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.db import models
from taggit.managers import TaggableManager

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
import os
WAGTAIL_ROOT = os.path.dirname(__file__)

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.apps import AppConfig

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from wagtail.wagtailadmin.forms import WagtailAdminModelForm

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.db import models
from django.utils.encoding import python_2_unicode_compatible

Wyświetl plik

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*
from __future__ import unicode_literals
from __future__ import absolute_import, unicode_literals
import warnings

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.apps import AppConfig

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from wagtail.wagtailcore import blocks

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django import forms
from wagtail.wagtailadmin.forms import WagtailAdminPageForm

Wyświetl plik

@ -1,4 +1,4 @@
from __future__ import unicode_literals
from __future__ import absolute_import, unicode_literals
import hashlib
import os

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.conf.urls import url
from wagtail.tests.testapp.views import bob_only_zone

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.http import HttpResponse
from wagtail.wagtailadmin.utils import user_passes_test

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.http import HttpResponse
from wagtail.wagtailadmin.menu import MenuItem

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.conf.urls import include, url
from wagtail.api.v2 import urls as wagtailapi2_urls

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from importlib import import_module
from django.apps import apps

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
import warnings
from django.template import loader

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
import warnings

Wyświetl plik

@ -1,3 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
DEFAULT_PAGE_KEY = 'p'

Wyświetl plik

@ -1,6 +1,8 @@
# Copied from django-sendfile 0.3.6 and tweaked to allow a backend to be passed
# to sendfile()
# See: https://github.com/johnsensible/django-sendfile/pull/33
from __future__ import absolute_import, unicode_literals
import os.path
from mimetypes import guess_type

Wyświetl plik

@ -1,6 +1,8 @@
# Sendfile "streaming" backend
# This is based on sendfiles builtin "simple" backend but uses a StreamingHttpResponse
from __future__ import absolute_import, unicode_literals
import os
import re
import stat

Some files were not shown because too many files have changed in this diff Show More