mirror of
https://github.com/django/django.git
synced 2025-12-19 23:32:27 +00:00
Fixed #5701 -- Fixed decorators to take the name, attributes, and docstring of the function they decorate by adding a modified version of the functools.wraps function from Python 2.5. wraps has been altered to work with Django's curry function and with Python 2.3, which doesn't allow assignment of a function's __name__ attribute. This fixes severaly annoyances, such as the online documentation for template filters served by the admin app. This change is backwards incompatible if, for some reason, you were relying on the name of a Django decorator instead of the function it decorates.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@7153 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
6482f1f887
commit
5ca0b9203b
10 changed files with 218 additions and 14 deletions
|
|
@ -1,6 +1,10 @@
|
|||
"Functions that help with dynamically creating decorators for views."
|
||||
|
||||
import types
|
||||
try:
|
||||
from functools import wraps
|
||||
except ImportError:
|
||||
from django.utils.functional import wraps # Python 2.3, 2.4 fallback.
|
||||
|
||||
def decorator_from_middleware(middleware_class):
|
||||
"""
|
||||
|
|
@ -53,5 +57,5 @@ def decorator_from_middleware(middleware_class):
|
|||
if result is not None:
|
||||
return result
|
||||
return response
|
||||
return _wrapped_view
|
||||
return wraps(view_func)(_wrapped_view)
|
||||
return _decorator_from_middleware
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue