Commit c91bc68e authored by Matthew Somerville's avatar Matthew Somerville Committed by Tim Graham
Browse files

Fixed #24927 -- Used python_2_unicode_compatible from six

parent 2fbea621
Loading
Loading
Loading
Loading
+2 −16
Original line number Diff line number Diff line
@@ -25,22 +25,8 @@ class DjangoUnicodeDecodeError(UnicodeDecodeError):
                type(self.obj))


def python_2_unicode_compatible(klass):
    """
    A decorator that defines __unicode__ and __str__ methods under Python 2.
    Under Python 3 it does nothing.

    To support Python 2 and 3 with a single code base, define a __str__ method
    returning text and apply this decorator to the class.
    """
    if six.PY2:
        if '__str__' not in klass.__dict__:
            raise ValueError("@python_2_unicode_compatible cannot be applied "
                             "to %s because it doesn't define __str__()." %
                             klass.__name__)
        klass.__unicode__ = klass.__str__
        klass.__str__ = lambda self: self.__unicode__().encode('utf-8')
    return klass
# For backwards compatibility. (originally in Django, then added to six 1.9)
python_2_unicode_compatible = six.python_2_unicode_compatible


def smart_text(s, encoding='utf-8', strings_only=False, errors='strict'):