Projet

Général

Profil

Bug #26972

crash sur fichier csv dont le nom contient des accents

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

Statut:
Fermé
Priorité:
Haut
Assigné à:
-
Version cible:
-
Début:
04 octobre 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Révision 7b9f9ab8 (diff)
Ajouté par Frédéric Péters il y a plus de 5 ans

debian: run service in a utf-8 locale (#26972)

Historique

#2

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.

#3

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

  • Priorité changé de Normal à Haut

À nouveau sur rouen/test.

#4

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.

#5

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

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.

#6

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.

#7

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)
#8

Mis à jour par Benjamin Dauvergne il y a plus de 5 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF