Développement #12872
ne pas inclure le chemin complet comme nom d'image
0%
Description
Pour le moment on a ça :
Content-Type: image/png; name="/media/ckeditor/uploads/2016/08/18/whatever.png" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="/media/ckeditor/uploads/2016/08/18/whatever.png" Content-ID: </media/ckeditor/uploads/2016/08/18/whatever.png>
Ce serait mieux d'avoir uniquement la partie avec le nom de fichier dans filename.
Files
Associated revisions
History
Updated by Serghei Mihai over 8 years ago
- File 0001-include-filename-only-for-attached-inline-images-128.patch 0001-include-filename-only-for-attached-inline-images-128.patch added
- Patch proposed changed from No to Yes
Updated by Frédéric Péters about 8 years ago
Ça ne fonctionne pas. Dans le mail ça se trouve être mis src="filename"
et non le src="cid:filename"
qu'il faudrait pour que l'image puisse apparaitre. Parce que le module emails passe sur les attributs @src et celui-ci est encore à media/ckeditor/whatever et media/ckeditor/whatever n'est pas trouvé dans les attachements connus vu que c'est maintenant uniquement whatever, etc.
Updated by Serghei Mihai about 8 years ago
- File 0001-include-filename-only-for-attached-inline-images-128.patch 0001-include-filename-only-for-attached-inline-images-128.patch added
Après un peu d'archéologie dans le code de emails, patch à jour.
Updated by Thomas Noël about 8 years ago
J'éviterais le trop simple basename pour renommer les fichiers, ça va casser sur les doublons (qui existeront forcément, on ne contrôle pas) : plutôt faire un replace('/','_') ou un hash du nom
je poserai aussi quelques commentaires pour dire ce qui se passe lors des m.transformer.*
Je me pose quand même la question de faire toute cette moulinette sur chaque mail, ça simplifie pas la compréhension, et tout ça juste pour le lien unsubscribe. On pourrait convenir d'un remplacement de ###UNSUBCRIBE_LINK### posé dans corbo/announce.html ?
Updated by Frédéric Péters about 8 years ago
Je me pose quand même la question de faire toute cette moulinette sur chaque mail, ça simplifie pas la compréhension, et tout ça juste pour le lien unsubscribe. On pourrait convenir d'un remplacement de ###UNSUBCRIBE_LINK### posé dans corbo/announce.html ?
Uh, aucun rapport ?
Updated by Thomas Noël about 8 years ago
Frédéric Péters a écrit :
Je me pose quand même la question de faire toute cette moulinette sur chaque mail, ça simplifie pas la compréhension, et tout ça juste pour le lien unsubscribe. On pourrait convenir d'un remplacement de ###UNSUBCRIBE_LINK### posé dans corbo/announce.html ?
Uh, aucun rapport ?
Oui, pas de rapport avec ce patch, c'est une autre idée.
Updated by Serghei Mihai about 8 years ago
- File 0001-include-filename-only-for-attached-inline-images-128.patch 0001-include-filename-only-for-attached-inline-images-128.patch added
- Assignee set to Serghei Mihai
Je viens de rajouter un hash à chaque image afin d'éviter les doublons issus des différents répértoires de ckeditor.
Et quelques commentaires quant aux fonctions de emails
Updated by Thomas Noël about 8 years ago
Serghei Mihai a écrit :
Je viens de rajouter un hash à chaque image afin d'éviter les doublons issus des différents répértoires de ckeditor.
Tu fais un hash du nom seulement (sans le répertoire), ça marchera pas...
Aussi, dans les tests, il faut hardcoder des choses (aka "ça sert à rien de tester si add(2,2)==add(2,2)")
Updated by Serghei Mihai about 8 years ago
- File 0001-include-filename-only-for-attached-inline-images-128.patch 0001-include-filename-only-for-attached-inline-images-128.patch added
Bien, vu. Je viens de modifier la fonction.
Concernant les tests, tu parles de la fonction de test des images inline?
Updated by Thomas Noël about 8 years ago
Serghei Mihai a écrit :
Bien, vu. Je viens de modifier la fonction.
Heu... vraiment ?
Concernant les tests, tu parles de la fonction de test des images inline?
Bon, j'ai peut-être tort, par exemple dans la séquence :
transformed_image_src = transform_image_src(img_src) assert transformed_image_src in mail.outbox[0].attachments.keys() assert 'cid:%s' % transformed_image_src in mail.outbox[0].html_body
ça serait mieux de faire un "transformed_image_src = 'ce que tu sais être le résultat correct'" (et pas le résultat d'un calcul).
Updated by Serghei Mihai about 8 years ago
Oui.
Les lignes qui ont changé dans la fonction:
... name, ext = os.path.splitext(src) ... return '%s_%s%s' % (os.path.basename(name), hash.hexdigest()[:8], ext)
Quant aux tests, je repasse le nom de l'image par la fonction transform_image_src
car l'image peut être sauvegardé par Django sous un nom différent.
Par exemple "logo.png" peut être écrit par le storage comme "logo_1l12eDE.png"
Updated by Thomas Noël about 8 years ago
Serghei Mihai a écrit :
Oui.
Les lignes qui ont changé dans la fonction:
[...]
Arf, j'ai raté cette subtilité, sorry (mais bon, j'aurais utilisé un bête hashlib.sha256(src) sans tripoter le src)
Quant aux tests, je repasse le nom de l'image par la fonction
transform_image_src
car l'image peut être sauvegardé par Django sous un nom différent.
Par exemple "logo.png" peut être écrit par le storage comme "logo_1l12eDE.png"
Okaye, de toute façon l'essentiel c'est de retrouver la même valeur dans les cid: et dans les attachments, donc on va dire que j'arrête de râler :)
Bref, ça me semble valoir un bon "ack".
Updated by Serghei Mihai about 8 years ago
Thomas Noël a écrit :
Arf, j'ai raté cette subtilité, sorry (mais bon, j'aurais utilisé un bête hashlib.sha256(src) sans tripoter le src)
Je voulais garder le nom du fichier original suivi d'un hash pour pouvoir quand même réperer quelle image est utilisée et ou dans le corps du message.
Updated by Serghei Mihai about 8 years ago
- Status changed from En cours to Résolu (à déployer)
commit ecf2d157efc7f11bb5b16b08fbf1b78cb31b6f23 Author: Serghei Mihai <smihai@entrouvert.com> Date: Mon Aug 22 13:51:07 2016 +0200 include filename only for attached inline images (#12872)
include filename only for attached inline images (#12872)