diff --git a/django/template/__init__.py b/django/template/__init__.py index 6fd8a03250..90fd13e1ce 100644 --- a/django/template/__init__.py +++ b/django/template/__init__.py @@ -814,7 +814,7 @@ class Library(object): raise InvalidTemplateLibrary, "Unsupported arguments to Library.tag: (%r, %r)", (name, compile_function) def tag_function(self,func): - self.tags[func.__name__] = func + self.tags[getattr(func, "_decorated_function", func).__name__] = func return func def filter(self, name=None, filter_func=None): @@ -838,7 +838,7 @@ class Library(object): raise InvalidTemplateLibrary, "Unsupported arguments to Library.filter: (%r, %r)", (name, filter_func) def filter_function(self, func): - self.filters[func.__name__] = func + self.filters[getattr(func, "_decorated_function", func).__name__] = func return func def simple_tag(self,func): @@ -852,9 +852,9 @@ class Library(object): resolved_vars = [resolve_variable(var, context) for var in self.vars_to_resolve] return func(*resolved_vars) - compile_func = curry(generic_tag_compiler, params, defaults, func.__name__, SimpleNode) + compile_func = curry(generic_tag_compiler, params, defaults, getattr(func, "_decorated_function", func).__name__, SimpleNode) compile_func.__doc__ = func.__doc__ - self.tag(func.__name__, compile_func) + self.tag(getattr(func, "_decorated_function", func).__name__, compile_func) return func def inclusion_tag(self, file_name, context_class=Context, takes_context=False): @@ -888,9 +888,9 @@ class Library(object): self.nodelist = t.nodelist return self.nodelist.render(context_class(dict)) - compile_func = curry(generic_tag_compiler, params, defaults, func.__name__, InclusionNode) + compile_func = curry(generic_tag_compiler, params, defaults, getattr(func, "_decorated_function", func).__name__, InclusionNode) compile_func.__doc__ = func.__doc__ - self.tag(func.__name__, compile_func) + self.tag(getattr(func, "_decorated_function", func).__name__, compile_func) return func return dec diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py index 9c72201984..b53375b42d 100644 --- a/django/template/defaultfilters.py +++ b/django/template/defaultfilters.py @@ -35,10 +35,6 @@ def stringfilter(func): args[0] = smart_string(args[0]) return func(*args, **kwargs) - # Make sure the internal name is the original function name because this - # is the internal name of the filter if passed directly to Library().filter - _dec.__name__ = func.__name__ - # Include a reference to the real function (used to check original # arguments by the template parser). _dec._decorated_function = getattr(func, '_decorated_function', func)