Projet

Général

Profil

0002-prevent-non-utf-8-strings-from-breaking-inspect-1044.patch

Benjamin Dauvergne, 25 mars 2016 23:27

Télécharger (1,9 ko)

Voir les différences:

Subject: [PATCH 2/2] prevent non utf-8 strings from breaking /inspect (#10447)

 wcs/backoffice/management.py | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
wcs/backoffice/management.py
1805 1805
        if not (get_publisher().get_backoffice_root().is_accessible('forms') or
1806 1806
                get_publisher().get_backoffice_root().is_accessible('workflows')):
1807 1807
            raise errors.AccessForbiddenError()
1808
        charset = get_publisher().site_charset
1808 1809
        get_response().breadcrumb.append(('inspect', _('Form Inspector')))
1809 1810
        self.html_top(self.formdef.name)
1810 1811
        r = TemplateIO(html=True)
......
1814 1815
        r += htmltext(' <li><h3>%s</h3></li>') % _('Substitution variables')
1815 1816
        substvars = self.filled.get_substitution_variables()
1816 1817
        substvars.update(self.filled.formdef.get_substitution_variables())
1818

  
1819
        def safe(v):
1820
            if isinstance(v, str):
1821
                try:
1822
                    unicode(v, charset)
1823
                except UnicodeDecodeError:
1824
                    v = repr(v)
1825
            else:
1826
                try:
1827
                    v = unicode(v).encode(charset)
1828
                except UnicodeDecodeError:
1829
                    v = repr(v)
1817 1830
        for k, v in sorted(substvars.items()):
1831
            k = safe(k)
1832
            v = safe(v)
1818 1833
            r += htmltext('<li><code title="%s">%s</code>') % (k, k)
1819 1834
            r += htmltext('  <div class="value"><span>%s</span>') % v
1820 1835
            if not isinstance(v, basestring):
1821
-