Projet

Général

Profil

Development #43502

utils.attachment() a des effets de bord désormais...

Ajouté par Benjamin Dauvergne il y a presque 4 ans. Mis à jour il y a presque 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
01 juin 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Jusqu'à #41679, wcs.qommon.evalutils.attachment() se contentait de produire un JSON typique pour une pièce jointe {filename,content_type,b64_content} sans rien faire d'autre. Désormais il retourne un objet du type Upload constuit par FileField.convert_value_from_anything() ce qui ne me semble pas problématique et permet de passer plus de types différents via content; par contre ça appelle UploadStorage.save(upload) ce qui crée des fichiers uploads orphelins lorsqu'on s'en sert simplement pour changer le nom du fichier uploadé d'un web-service (et là vous me direz peut-être qu'il vaut mieux reconstruire complètement le JSON via PicklableUpload.get_base64_content())@.

Ceci étant dit et fait, je pencherai pour une alternative, avoir sur LazyFieldVarFile une méthode .as_filename(filename, [content_type=None]) qui créerait simplement un PicklableUpload en changeant orig_filename et déprécier utils.attachment() pour son usage original (pour lequel il fonctionne toujours bien sûr).

Après s'il y a toujours dans les cartons le fait de pouvoir utiliser les champs fichiers dans les gabarits ça pourrait être aussi un template filter |as-filename:"new-filename" qui ferait la même chose.

Historique

#1

Mis à jour par Frédéric Péters il y a presque 2 ans

  • Statut changé de Nouveau à Fermé

Le seul problème est le stockage temporaire mais il y a nettoyage automatique des fichiers orphelins, pas un vrai problème donc.

Formats disponibles : Atom PDF