0001-backoffice-display-human-type-names-in-inspect-page-.patch
tests/backoffice_pages/test_form_inspect.py | ||
---|---|---|
118 | 118 |
assert '0' * 1000 in resp.text |
119 | 119 |
assert len(resp.text) < 100000 |
120 | 120 |
pq = resp.pyquery.remove_namespaces() |
121 |
assert pq('[title="form_var_file"]').parents('li').children('div.value span').text() == 'hello.txt' |
|
122 |
assert ( |
|
123 |
pq('[title="form_var_file_raw"]').parents('li').children('div.value span').text() |
|
124 |
== 'hello.txt (file)' |
|
125 |
) |
|
121 | 126 |
assert pq('[title="form_var_foo_unicode"]').parents('li').children('div.value span').text() == 'uné' |
122 | 127 |
assert ( |
123 | 128 |
pq('[title="form_var_foo_non_unicode_convertible"]') |
... | ... | |
128 | 133 |
) |
129 | 134 |
assert ( |
130 | 135 |
pq('[title="form_var_foo_str_but_non_utf8"]').parents('li').children('div.value span').text() |
131 |
== "b'\\xed\\xa0\\x00' (<class 'bytes'>)"
|
|
136 |
== "b'\\xed\\xa0\\x00' (bytes)"
|
|
132 | 137 |
) |
133 | 138 | |
134 | 139 |
# don't show «unusable» variables |
... | ... | |
233 | 238 |
assert 'Template rendering' in resp.text |
234 | 239 |
assert '<div class="test-tool-result-plain">hello.txt</div>' in resp.text |
235 | 240 |
assert 'rendered as an object' in resp.text |
236 |
assert '<div class="test-tool-result-plain">hello.txt (PicklableUpload)</div>' in resp.text
|
|
241 |
assert '<div class="test-tool-result-plain">hello.txt (file)</div>' in resp.text
|
|
237 | 242 |
assert 'HTML Source' not in resp.text |
238 | 243 | |
239 | 244 |
resp.form['template'] = '{% for x in 1 %}ok{% endfor %}' |
wcs/backoffice/management.py | ||
---|---|---|
63 | 63 |
WidgetList, |
64 | 64 |
WysiwygTextWidget, |
65 | 65 |
) |
66 |
from ..qommon.misc import C_, ellipsize |
|
66 |
from ..qommon.misc import C_, ellipsize, get_type_name
|
|
67 | 67 |
from ..qommon.storage import ( |
68 | 68 |
Contains, |
69 | 69 |
Equal, |
... | ... | |
3021 | 3021 |
r += htmltext('<h3>%s</h3>') % _('Also rendered as an object:') |
3022 | 3022 |
r += htmltext('<div class="test-tool-result-plain">%s (%s)</div>') % ( |
3023 | 3023 |
complex_result, |
3024 |
complex_result.__class__.__name__,
|
|
3024 |
get_type_name(complex_result),
|
|
3025 | 3025 |
) |
3026 | 3026 |
r += htmltext('</div>') |
3027 | 3027 |
elif test_mode == 'html_template': |
... | ... | |
3140 | 3140 |
r += htmltext('<li><code title="%s">%s</code>') % (k, k) |
3141 | 3141 |
r += htmltext(' <div class="value"><span>%s</span>') % ellipsize(safe(v), 10000) |
3142 | 3142 |
if not isinstance(v, str): |
3143 |
r += htmltext(' <span class="type">(%r)</span>') % type(v)
|
|
3143 |
r += htmltext(' <span class="type">(%s)</span>') % get_type_name(v)
|
|
3144 | 3144 |
r += htmltext('</div></li>') |
3145 | 3145 |
r += htmltext('</div>') |
3146 | 3146 |
wcs/qommon/misc.py | ||
---|---|---|
1046 | 1046 |
response.set_content_type(content_type) |
1047 | 1047 |
response.set_header('content-disposition', 'attachment; filename=%s' % filename) |
1048 | 1048 |
return '<?xml version="1.0"?>\n' + ET.tostring(etree).decode('utf-8') |
1049 | ||
1050 | ||
1051 |
def get_type_name(value): |
|
1052 |
from .upload_storage import PicklableUpload |
|
1053 | ||
1054 |
object_type_names = { |
|
1055 |
type(None): _('no value'), |
|
1056 |
bool: _('boolean'), |
|
1057 |
bytes: _('bytes'), |
|
1058 |
datetime.datetime: _('datetime'), |
|
1059 |
datetime.date: _('date'), |
|
1060 |
datetime.time: _('time'), |
|
1061 |
decimal.Decimal: _('decimal number'), |
|
1062 |
int: _('integer number'), |
|
1063 |
str: _('string'), |
|
1064 |
PicklableUpload: _('file'), |
|
1065 |
} |
|
1066 |
object_type_name = object_type_names.get(value.__class__, value.__class__.__name__) |
|
1067 |
return object_type_name |
|
1049 |
- |