Development #34783
Nom des pièces jointes à une démarche
0%
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
Mis à jour par Nicolas Roche il y a plus de 4 ans
- Fichier 0001-field-display-attachment-utf-8-filenames-34783.patch 0001-field-display-attachment-utf-8-filenames-34783.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
- 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)
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.
Mis à jour par Nicolas Roche il y a plus de 4 ans
- Fichier 0001-field-display-attachment-utf-8-filenames-34783.patch 0001-field-display-attachment-utf-8-filenames-34783.patch ajouté
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.
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).
Mis à jour par Nicolas Roche il y a plus de 4 ans
- Fichier 0001-fields-display-attachment-utf-8-filenames-34783.patch 0001-fields-display-attachment-utf-8-filenames-34783.patch ajouté
J'avoue, je suis parti en vrille.
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.