Projet

Général

Profil

Bug #38845

erreur d'évaluation d'un champ lazy avec une valeur en utf-8

Ajouté par Serghei Mihai il y a plus de 4 ans. Mis à jour il y a environ 4 ans.

Statut:
Fermé
Priorité:
Bas
Assigné à:
-
Version cible:
-
Début:
08 janvier 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Situation arrivée dans #38763 ou la condition de sortie de page contient: "professionnel" in form_var_type_demandeur et le champ contient des caractères en utf-8.

(Pdb) value in self.get_value()
*** UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 21: ordinal not in range(128)

ou
(Pdb) value, type(value)
(u'professionnel', <class 'django.utils.safestring.SafeText'>)
(Pdb) self.get_value(), type(self.get_value())
('Un professionnel du d\xc3\xa9m\xc3\xa9nagement', <type 'str'>)

Historique

#2

Mis à jour par Thomas Noël il y a plus de 4 ans

D'où vient ce code ?

value in self.get_value()

(c'est quoi self ?)

#3

Mis à jour par Frédéric Péters il y a plus de 4 ans

Ce sera corrigé (par le passage) en Python 3, les bricolages ici seront rejetés.

#4

Mis à jour par Thomas Noël il y a plus de 4 ans

Frédéric Péters a écrit :

Ce sera corrigé (par le passage) en Python 3, les bricolages ici seront rejetés.

Le code en cause serait dans wcs/variables.py :

    def __contains__(self, value):
        if self._field.key == 'items':
            return misc.site_encode(value) in self._data.get(self._field.id)    <-- site_encode
        return value in self.get_value()                                        <-- pas ici

Il y avait déjà eu le site_encode à l'occasion de #28416, et dans ce ticket tu disais Frédéric "prendre le risque de divergence" (note 3) : est-ce justement que tu ne faisais pas l'encodage sur la dernière ligne de la fonction ?

#5

Mis à jour par Frédéric Péters il y a plus de 4 ans

Je ne réfléchirai pas une seconde à ce ticket.

#6

Mis à jour par Thomas Noël il y a plus de 4 ans

  • Priorité changé de Normal à Bas
#8

Mis à jour par Frédéric Péters il y a environ 4 ans

  • Statut changé de Nouveau à Fermé

Obsolète via le passage à Python 3.

Formats disponibles : Atom PDF