summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorRyan Rubin <ryanmrubin@gmail.com>2018-05-25 10:11:46 -0500
committerTim Graham <timograham@gmail.com>2018-05-25 11:11:46 -0400
commita8d12bc28069d56e0306770ab9c73738293663f7 (patch)
treec521f575b96c5470bd9c7a120b6c0762a02f69da /django
parent96ea4f875b289aef3372caf7851dabf64347ce8c (diff)
Fixed #29400 -- Fixed crash in custom template filters that use decorated functions.
Regression in 620e9dd31a2146d70de740f96a8cb9a6db054fc7.
Diffstat (limited to 'django')
-rw-r--r--django/template/base.py4
1 files changed, 2 insertions, 2 deletions
diff --git a/django/template/base.py b/django/template/base.py
index 9dafd3eb59..c2376ff5a5 100644
--- a/django/template/base.py
+++ b/django/template/base.py
@@ -53,7 +53,7 @@ times with multiple contexts)
import logging
import re
from enum import Enum
-from inspect import getcallargs, getfullargspec
+from inspect import getcallargs, getfullargspec, unwrap
from django.template.context import ( # NOQA: imported for backwards compatibility
BaseContext, Context, ContextPopException, RequestContext,
@@ -707,7 +707,7 @@ class FilterExpression:
# First argument, filter input, is implied.
plen = len(provided) + 1
# Check to see if a decorator is providing the real function.
- func = getattr(func, '_decorated_function', func)
+ func = unwrap(func)
args, _, _, defaults, _, _, _ = getfullargspec(func)
alen = len(args)