Projet

Général

Profil

Development #34783

Nom des pièces jointes à une démarche

Ajouté par Marie Kuntz il y a presque 5 ans. Mis à jour il y a environ 4 ans.

Statut:
Fermé
Priorité:
Bas
Assigné à:
Début:
12 juillet 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Si les pièces jointes à une démarche contiennent un accent ou un caractère spécial, celui-ci saute lors de la preview (image 1). En revanche, le nom s'affiche correctement en BO (cf image 2).
Peut-on corriger cela ou à défaut, appliquer un filtre (safe ou slugify par exemple) sur le nom du fichier transmis ?


Fichiers

Historique

#2

Mis à jour par Marie Kuntz il y a presque 5 ans

  • Version cible mis à Wishlist
#3

Mis à jour par Marie Kuntz il y a presque 5 ans

  • Priorité changé de Normal à Bas
#4

Mis à jour par Nicolas Roche il y a plus de 4 ans

  • Assigné à mis à Nicolas Roche
#5

Mis à jour par Nicolas Roche il y a plus de 4 ans

Il y a 2 modifications :
  • wcs/root.py::RootDirectory::tmp_upload()
    pour avoir le bon rendu à l'upload du fichier sur le formulaire
  • wcs/qommon/templates/qommon/forms/widgets/file.html
    pour garder le bon rendu si on rafraîchit la page (F5)
#6

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

On ne peut pas afficher orig_filename, qui est le nom fourni par le navigateur, qui peut se trouver être C:\foo\bar\upload_this.

#7

Mis à jour par Nicolas Roche il y a plus de 4 ans

Oui, merci Fred je n'avais pas vu ça.

J'ai l'impression que l'on va récupérer ce même orig_filename depuis le dump json, plus loins sur la page de validation par exemple (quand on affiche le nom avec les accents).

wcs/qommon/sessions.py::add_tempfile()

        data = {
            'orig_filename': upload.orig_filename,  # <- ici
            'base_filename': upload.base_filename,
            'content_type': upload.content_type,
            'charset': upload.charset,
            'size': size,
            'session': self.id,
            'token': signer.sign(token),
            'unsigned_token': token,
        }
        with open(filename + '.json', 'w') as fd:
            json.dump(data, fd, indent=2)

Pour prendre en compte la remarque ci-dessus, on peut :
  • soit juste normer base_filename, mais cette variable me semble déjà utilisée, par exemple pour l'export.
  • soit conserver le premier patch puis normer orig_filename, ce que je propose ici.
#8

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

De manière générale si tu te trouves à modifier plein de fichiers la direction n'est sans doute pas la bonne.

--- a/wcs/qommon/sessions.py
+++ b/wcs/qommon/sessions.py
@@ -282,7 +282,7 @@ class Session(QommonSession, CaptchaSession, StorableObject):
         signer = self.get_signer()
         data = {
             'orig_filename': upload.orig_filename,
-            'base_filename': upload.base_filename,
+            'base_filename': make_safe_but_keep_accents(upload.orig_filename),
             'content_type': upload.content_type,
             'charset': upload.charset,
             'size': size,

(et je serais même à penser que os.path.basename(...) suffirait).

#10

Mis à jour par Nicolas Roche il y a environ 4 ans

  • Statut changé de Solution proposée à Fermé

Problème auto-magiquement résolu par le passage à python3.

Formats disponibles : Atom PDF