Commit 59027a4c authored by Tim Graham's avatar Tim Graham
Browse files

[1.9.x] Fixed #25466 -- Added backwards compatibility aliases for LoaderOrigin and StringOrigin.

Thanks Simon Charette for the DeprecationInstanceCheck class.

Backport of 8d1a001e from master
parent 60fe6efe
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -58,7 +58,8 @@ from .exceptions import TemplateDoesNotExist, TemplateSyntaxError # NOQA i

# Template parts
from .base import (                                                     # NOQA isort:skip
    Context, Node, NodeList, Origin, RequestContext, Template, Variable,
    Context, Node, NodeList, Origin, RequestContext, StringOrigin, Template,
    Variable,
)

# Deprecated in Django 1.8, will be removed in Django 1.10.
+9 −1
Original line number Diff line number Diff line
@@ -60,7 +60,10 @@ from django.template.context import ( # NOQA: imported for backwards compatibil
    BaseContext, Context, ContextPopException, RequestContext,
)
from django.utils import six
from django.utils.deprecation import RemovedInDjango110Warning
from django.utils.deprecation import (
    DeprecationInstanceCheck, RemovedInDjango20Warning,
    RemovedInDjango110Warning,
)
from django.utils.encoding import (
    force_str, force_text, python_2_unicode_compatible,
)
@@ -158,6 +161,11 @@ class Origin(object):
            )


class StringOrigin(six.with_metaclass(DeprecationInstanceCheck, Origin)):
    alternative = 'django.template.Origin'
    deprecation_warning = RemovedInDjango20Warning


class Template(object):
    def __init__(self, template_string, origin=None, name=None, engine=None):
        try:
+11 −1
Original line number Diff line number Diff line
import warnings

from django.utils.deprecation import RemovedInDjango110Warning
from django.utils import six
from django.utils.deprecation import (
    DeprecationInstanceCheck, RemovedInDjango20Warning,
    RemovedInDjango110Warning,
)

from . import engines
from .backends.django import DjangoTemplates
from .base import Origin
from .engine import (
    _context_instance_undefined, _dictionary_undefined, _dirs_undefined,
)
@@ -147,3 +152,8 @@ class BaseLoader(base.Loader):
            "django.template.loaders.base.Loader.",
            RemovedInDjango110Warning, stacklevel=2)
        super(BaseLoader, self).__init__(*args, **kwargs)


class LoaderOrigin(six.with_metaclass(DeprecationInstanceCheck, Origin)):
    alternative = 'django.template.Origin'
    deprecation_warning = RemovedInDjango20Warning
+9 −0
Original line number Diff line number Diff line
@@ -73,3 +73,12 @@ class RenameMethodsBase(type):
                    setattr(base, old_method_name, wrapper(new_method))

        return new_class


class DeprecationInstanceCheck(type):
    def __instancecheck__(self, instance):
        warnings.warn(
            "`%s` is deprecated, use `%s` instead." % (self.__name__, self.alternative),
            self.deprecation_warning, 2
        )
        return super(DeprecationInstanceCheck, self).__instancecheck__(instance)
+4 −0
Original line number Diff line number Diff line
@@ -100,6 +100,10 @@ details on these changes.
* The ``enclosure`` keyword argument to ``SyndicationFeed.add_item()`` will be
  removed.

* The ``django.template.loader.LoaderOrigin`` and
  ``django.template.base.StringOrigin`` aliases for
  ``django.template.base.Origin`` will be removed.

.. _deprecation-removed-in-1.10:

1.10
Loading