diff options
| author | xmo-odoo <xmo@odoo.com> | 2017-05-10 09:39:55 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-05-10 09:39:55 +0200 |
| commit | fffaf735f58f1ac57781c095eb552de6d1fcdc47 (patch) | |
| tree | 88ab0ab65430d871862a836524e0ecc890d1674d /addons/mail/models/html2text.py | |
| parent | 10eee18a047d35305dc46282e610e88936d81ffc (diff) | |
[FIX] P3: list -> iterable builtins (#16811)
In Python 3:
* various builtins and dict methods were changed to return
view/iterable objects rather than lists
* and the separate Python 2 view/iterable builtins and methods were
removed altogether
This is problematic when using these items as list (which the happens
repeatedly in Odoo), but more viciously when iterating *multiple times*
over them (which also happens, which I've messed up multiple times while
writing this, and which is a pain to debug even when you've just created
the issue).
Convert all code using these to semantics-matching cross-version
helper functions to get the LCD behaviour between P2 and P3, and
forbid the builtins via lint.
issue #8530
Diffstat (limited to 'addons/mail/models/html2text.py')
| -rwxr-xr-x | addons/mail/models/html2text.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/addons/mail/models/html2text.py b/addons/mail/models/html2text.py index 11844ef7720..5e2fb25150f 100755 --- a/addons/mail/models/html2text.py +++ b/addons/mail/models/html2text.py @@ -1,5 +1,7 @@ #!/usr/bin/env python """html2text: Turn HTML into equivalent Markdown-structured text.""" +from odoo.tools import pycompat + __version__ = "2.36" __author__ = "Aaron Swartz (me@aaronsw.com)" __copyright__ = "(C) 2004-2008 Aaron Swartz. GNU GPL 3." @@ -8,7 +10,6 @@ __contributors__ = ["Martin 'Joey' Schulze", "Ricardo Reyes", "Kevin Jay North"] # TODO: # Support decoded entities with unifiable. -if not hasattr(__builtins__, 'True'): True, False = 1, 0 import re, sys, urllib, htmlentitydefs, codecs import sgmllib import urlparse @@ -52,7 +53,7 @@ unifiable = {'rsquo':"'", 'lsquo':"'", 'rdquo':'"', 'ldquo':'"', unifiable_n = {} -for k in unifiable.keys(): +for k in unifiable: unifiable_n[name2cp(k)] = unifiable[k] def charref(name): @@ -61,13 +62,13 @@ def charref(name): else: c = int(name) - if not UNICODE_SNOB and c in unifiable_n.keys(): + if not UNICODE_SNOB and c in unifiable_n: return unifiable_n[c] else: return unichr(c) def entityref(c): - if not UNICODE_SNOB and c in unifiable.keys(): + if not UNICODE_SNOB and c in unifiable: return unifiable[c] else: try: name2cp(c) @@ -400,7 +401,7 @@ class _html2text(sgmllib.SGMLParser): self.a = newa if self.abbr_list and force == "end": - for abbr, definition in self.abbr_list.items(): + for abbr, definition in pycompat.items(self.abbr_list): self.out(" *[" + abbr + "]: " + definition + "\n") self.p_p = 0 |
