Opened 2 years ago

Last modified 7 weeks ago

#20222 assigned Bug

Some functions are wrapped into allow_lazy incorrectly

Reported by: void Owned by: bmispelon
Component: Utilities Version: master
Severity: Normal Keywords:
Cc: bmispelon@… Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: yes
Easy pickings: no UI/UX: no

Description

allow_lazy() requires more than one argument. Second and further arguments must be types.
There are a few functions which are wrapped into allow_lazy without *resultclasses specified.
Namely:

  • django.utils.html.strip_tags
  • django.utils.text.Truncator.chars
  • django.utils.text.Truncator.words
  • django.utils.text.recapitalize
  • django.utils.text.phone2numeric
  • django.utils.text.unescape_string_literal

IPython session, which demonstrates code broken because of that:

In [1]: from django.utils.functional import lazy
In [2]: from django.utils.encoding import force_text
In [3]: from django.utils import six
In [4]: from django.utils.html import strip_tags
In [5]: promise = lazy(lambda:u'hello', six.text_type)()
In [6]: force_text(promise)
Out[6]: u'hello'
In [7]: promise = lazy(lambda:u'hello', six.text_type)()
In [8]: stripped = strip_tags(promise)
In [9]: force_text(stripped)
Out[9]: u'<django.utils.functional.__proxy__ object at 0x101f6ca50>'

Change History (8)

comment:1 Changed 2 years ago by void

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset

Thanks to bmispelon for pointing that out.

comment:2 Changed 2 years ago by bmispelon

  • Cc bmispelon@… added
  • Easy pickings set
  • Triage Stage changed from Unreviewed to Accepted

comment:3 Changed 2 years ago by bmispelon

  • Owner changed from nobody to bmispelon
  • Status changed from new to assigned

I've started working on this on my branch: https://github.com/bmispelon/django/compare/allow-lazy-refactor

I hope to fix #20221 and #20223 along with this one.

comment:4 Changed 2 years ago by bmispelon

I've prepared a pull request for this ticket that include fixes for 3 other ones: https://github.com/django/django/pull/1007

comment:5 Changed 2 years ago by morty

  • Has patch set

comment:6 Changed 19 months ago by timo

  • Easy pickings unset
  • Patch needs improvement set

No longer merges cleanly.

comment:7 Changed 2 months ago by void

  • Patch needs improvement unset

I've updated bmispelon's patch so it merges cleanly as a pull request 4202:
https://github.com/django/django/pull/4202

comment:8 Changed 7 weeks ago by timgraham

  • Patch needs improvement set

Comments for improvement on the PR.

Note: See TracTickets for help on using tickets.
Back to Top