Project

General

Profile

Développement #12872

ne pas inclure le chemin complet comme nom d'image

Added by Frédéric Péters over 8 years ago. Updated almost 8 years ago.

Status:
Fermé
Priority:
Normal
Assignee:
Target version:
-
Start date:
18 August 2016
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:

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

Revision ecf2d157 (diff)
Added by Serghei Mihai about 8 years ago

include filename only for attached inline images (#12872)

History

#2

Updated by Serghei Mihai over 8 years ago

  • Status changed from Nouveau to En cours
#3

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.

#5

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 ?

#6

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 ?

#7

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.

#8

Updated by Serghei Mihai about 8 years ago

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

#9

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

#10

Updated by Serghei Mihai about 8 years ago

Bien, vu. Je viens de modifier la fonction.
Concernant les tests, tu parles de la fonction de test des images inline?

#11

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

#12

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"

#13

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

#14

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.

#15

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)
#16

Updated by Serghei Mihai almost 8 years ago

  • Status changed from Résolu (à déployer) to Fermé

Also available in: Atom PDF