From 679af4058dae8a54438d95ceb943f449e78448c1 Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Tue, 12 Mar 2013 11:28:01 +0100 Subject: [PATCH] Restricted a workaround for a bug in Python to the affected versions. --- django/utils/decorators.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/django/utils/decorators.py b/django/utils/decorators.py index e653a736af..91444f0de6 100644 --- a/django/utils/decorators.py +++ b/django/utils/decorators.py @@ -2,12 +2,16 @@ from functools import wraps, update_wrapper, WRAPPER_ASSIGNMENTS +from django.utils import six + + class classonlymethod(classmethod): def __get__(self, instance, owner): if instance is not None: raise AttributeError("This method is available only on the view class.") return super(classonlymethod, self).__get__(instance, owner) + def method_decorator(decorator): """ Converts a function decorator into a method decorator @@ -68,9 +72,13 @@ def decorator_from_middleware(middleware_class): def available_attrs(fn): """ Return the list of functools-wrappable attributes on a callable. - This is required as a workaround for http://bugs.python.org/issue3445. + This is required as a workaround for http://bugs.python.org/issue3445 + under Python 2. """ - return tuple(a for a in WRAPPER_ASSIGNMENTS if hasattr(fn, a)) + if six.PY3: + return WRAPPER_ASSIGNMENTS + else: + return tuple(a for a in WRAPPER_ASSIGNMENTS if hasattr(fn, a)) def make_middleware_decorator(middleware_class):