Projet

Général

Profil

Bug #35479

erreur lors de l'import de la liste d'evenement

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

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
20 août 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Internal Server Error: /manage/agendas/320/import-events

TypeError at /manage/agendas/320/import-events
"delimiter" must be string, not unicode

Request Method: POST
Request URL: https://chrono-orleans.test.entrouvert.org/manage/agendas/320/import-events
Django Version: 1.11.20
Python Executable: /usr/bin/uwsgi-core
Python Version: 2.7.13
Python Path: ['.', '', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
Server time: mar, 20 Aoû 2019 14:49:29 +0200
Installed Applications:
''
Installed Middleware:
''

Traceback:  

File "/usr/lib/python2.7/dist-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _legacy_get_response
  249.             response = self._get_response(request)

File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/usr/lib/python2.7/dist-packages/django/contrib/auth/decorators.py" in _wrapped_view
  23.                 return view_func(request, *args, **kwargs)

File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py" in view
  68.             return self.dispatch(request, *args, **kwargs)

File "/usr/lib/python2.7/dist-packages/chrono/manager/views.py" in dispatch
  448.         return super(ManagedAgendaMixin, self).dispatch(request, *args, **kwargs)

File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py" in dispatch
  88.         return handler(request, *args, **kwargs)

File "/usr/lib/python2.7/dist-packages/django/views/generic/edit.py" in post
  182.         if form.is_valid():

File "/usr/lib/python2.7/dist-packages/django/forms/forms.py" in is_valid
  183.         return self.is_bound and not self.errors

File "/usr/lib/python2.7/dist-packages/django/forms/forms.py" in errors
  175.             self.full_clean()

File "/usr/lib/python2.7/dist-packages/django/forms/forms.py" in full_clean
  384.         self._clean_fields()

File "/usr/lib/python2.7/dist-packages/django/forms/forms.py" in _clean_fields
  405.                     value = getattr(self, 'clean_%s' % name)()

File "/usr/lib/python2.7/dist-packages/chrono/manager/forms.py" in clean_events_csv_file
  194.         for i, csvline in enumerate(csv.reader(utf_8_encoder(content.splitlines()), dialect=dialect)):

Exception Type: TypeError at /manage/agendas/320/import-events
Exception Value: "delimiter" must be string, not unicode

Fichiers


Demandes liées

Duplique Chrono - Bug #33674: crash import csv, "delimiter" must be string, not unicodeRejeté04 juin 2019

Actions

Révisions associées

Révision 2310528f (diff)
Ajouté par Serghei Mihai il y a plus de 4 ans

manager: fix import of utf-8 encoded events file (#35479)

Historique

#4

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

Chouette, ça passe sans soucis dans chrono que je fais tourner en local en python 3.

#5

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

  • Assigné à mis à Serghei Mihai
#6

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

Je suis plutôt pour faire comme les autres tests et se passer du filesystem,

--- a/tests/test_manager.py
+++ b/tests/test_manager.py
@@ -616,6 +616,14 @@ def test_import_events(app, admin_user):
     assert Event.objects.count() == 2
     Event.objects.all().delete()

+    resp = app.get('/manage/agendas/%s/import-events' % agenda.id, status=200)
+    resp.form['events_csv_file'] = Upload('t.csv', '"date"\t"time"\t"etc."\n'
+                                                   '"2016-09-16"\t"18:00"\t"10"\t"5"\t"éléphant"\n'
+                                                   '"2016-09-19"\t"18:00"\t"10"'.encode('iso-8859-15'), 'text/csv')
+    resp = resp.form.submit(status=302)
+    assert Event.objects.count() == 2
+    Event.objects.all().delete()
+
#7

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

Taper le test à la fin pour ne rien avoir à adapter.

Et sur la dernière variation, ça se trouve faire deux fois la détection, tout ça gagnerait sans doute à être simplement,

         try:
-            dialect = csv.Sniffer().sniff(content)
+            dialect = csv.Sniffer().sniff(content if six.PY3 else content.encode('utf-8'))
         except csv.Error:
             dialect = None
#8

Mis à jour par Serghei Mihai il y a plus de 4 ans

#9

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

Comme noté pas fan de lancer deux fois la détection.

#11

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

  • Duplique Bug #33674: crash import csv, "delimiter" must be string, not unicode ajouté
#12

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

  • Statut changé de Solution proposée à Résolu (à déployer)
commit 2310528fc22dec45834b6974b3a94a40e9490ba3
Author: Serghei Mihai <smihai@entrouvert.com>
Date:   Tue Aug 20 16:14:35 2019 +0200

    manager: fix import of utf-8 encoded events file (#35479)
#13

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

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF