Bug #26972
crash sur fichier csv dont le nom contient des accents
0%
Description
Via #26969,
Internal Server Error: /csvdatasource/professionnels-par-ecoles/query/infirmieres/ Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 132, in get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py", line 71, in view return self.dispatch(request, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/django/views/decorators/csrf.py", line 58, in wrapped_view return view_func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/passerelle/views.py", line 269, in dispatch for name, method in inspect.getmembers(connector): File "/usr/lib/python2.7/inspect.py", line 253, in getmembers value = getattr(object, key) File "/usr/lib/python2.7/dist-packages/passerelle/apps/csvdatasource/models.py", line 159, in csv_file_datetime return make_aware(datetime.fromtimestamp(os.fstat(self.csv_file.fileno()).st_ctime)) File "/usr/lib/python2.7/dist-packages/django/core/files/utils.py", line 12, in <lambda> fileno = property(lambda self: self.file.fileno) File "/usr/lib/python2.7/dist-packages/django/db/models/fields/files.py", line 51, in _get_file self._file = self.storage.open(self.name, 'rb') File "/usr/lib/python2.7/dist-packages/django/core/files/storage.py", line 37, in open return self._open(name, mode) File "/usr/lib/python2.7/dist-packages/django/core/files/storage.py", line 201, in _open return File(open(self.path(name), mode)) UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 84: ordinal not in range(128)
Fichiers
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
Je ne vois pas trop d'où vient l'erreur parce que open() gère l'unicode sans souci normalement, peut-être une bidoulle qui ferait que sys.getfilesystemencoding()
n'est pas UTF-8
. La doc de python dit que c'est le résultat de nl_langinfo(CODESET)
lui même égale à ce que retournerait locale charmap
. Mauvaise locale système ? J'ai vérifié sur passerlle.rbx.dvl.entrouvert.org ce n'est pas le cas.
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Priorité changé de Normal à Haut
À nouveau sur rouen/test.
Mis à jour par Frédéric Péters il y a plus de 5 ans
Sommairement testé en local et sur passerelle.test (SaaS1), et là c'est ok, ça viendrait donc d'un truc sur le nouveau SaaS.
Dans une trace plus complète on voit,
os.stat(u'/var/lib/passerelle/tenants/passerelle-rouen.test.entrouvert.org/media/csv/centres_sportifs_et_\xe9quipements_r\xe9f\xe9rentiel_Publik_rlcCnFb.csv')
mais cette ligne exacte, tapée dans shell python ou un shell démarré via passerelle-manage dans le contexte du tenant, elle ne provoque pas d'erreur.
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Fichier 0001-debian-run-service-in-a-utf-8-locale-26972.patch 0001-debian-run-service-in-a-utf-8-locale-26972.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Je ne sais pas quelle différence entre ancien et nouveau SaaS mais assurons les choses en posant une locale utf-8 au service systemd.
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Statut changé de Solution proposée à Solution validée
Ack si testé en local le bug disparait.
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
(ah oui je n'écrivais pas j'avais testé sur rbx.tst).
commit 7b9f9ab8aa3cf3a1f3610e66e34ff025027c7dad Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sun Oct 7 12:28:01 2018 +0200 debian: run service in a utf-8 locale (#26972)
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Fermé
debian: run service in a utf-8 locale (#26972)