Project

General

Profile

Development #34783

Nom des pièces jointes à une démarche

Added by Marie Kuntz 5 months ago. Updated 2 months ago.

Status:
Solution proposée
Priority:
Bas
Assignee:
Start date:
12 Jul 2019
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

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 ?

fichier_fo.png View - image 1 (7.5 KB) Marie Kuntz, 12 Jul 2019 10:38 AM

fichier_bo.png View - image 2 (115 KB) Marie Kuntz, 12 Jul 2019 10:38 AM

0001-field-display-attachment-utf-8-filenames-34783.patch View (3.91 KB) Nicolas Roche, 08 Oct 2019 06:23 PM

0001-field-display-attachment-utf-8-filenames-34783.patch View (20.6 KB) Nicolas Roche, 09 Oct 2019 10:42 AM

0001-fields-display-attachment-utf-8-filenames-34783.patch View (3.05 KB) Nicolas Roche, 10 Oct 2019 09:44 AM

36060
36061

History

#2 Updated by Marie Kuntz 5 months ago

  • Target version set to Wishlist

#3 Updated by Marie Kuntz 5 months ago

  • Priority changed from Normal to Bas

#4 Updated by Nicolas Roche 2 months ago

  • Assignee set to Nicolas Roche

#5 Updated by Nicolas Roche 2 months ago

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 Updated by Frédéric Péters 2 months ago

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 Updated by Nicolas Roche 2 months ago

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 Updated by Frédéric Péters 2 months ago

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).

#9 Updated by Nicolas Roche 2 months ago

J'avoue, je suis parti en vrille.

Also available in: Atom PDF