Bug #38845
erreur d'évaluation d'un champ lazy avec une valeur en utf-8
0%
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
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 ?)
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.
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 ?
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.
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.