Project

General

Profile

Development #34783

Nom des pièces jointes à une démarche

Added by Marie Kuntz over 2 years ago. Updated almost 2 years ago.

Status:
Fermé
Priority:
Bas
Assignee:
Start date:
12 Jul 2019
Due date:
% Done:

0%

Estimated time:
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 ?


Files

History

#2

Updated by Marie Kuntz over 2 years ago

  • Target version set to Wishlist
#3

Updated by Marie Kuntz over 2 years ago

  • Priority changed from Normal to Bas
#4

Updated by Nicolas Roche about 2 years ago

  • Assignee set to Nicolas Roche
#5

Updated by Nicolas Roche about 2 years 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 (absent jusqu’au 12/12) about 2 years 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 about 2 years 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 (absent jusqu’au 12/12) about 2 years 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).

#10

Updated by Nicolas Roche almost 2 years ago

  • Status changed from Solution proposée to Fermé

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

Also available in: Atom PDF