Bug #13450
considérer toutes les images dans le corps d'une annonce comme "distantes"
0%
Description
Les annonces créées à partir des flux RSS contiendront des urls vers les images distantes.
La lib emails
est capable de récuperer automatiquement les images et les joindre proprement aux mails.
Dans ce cas, il serait bien d'uniformiser la jointure des images des annonces créées dans corbo et celles à partir d'un RSS en considerant que les images des annonces créées dans corbo comme "distantes".
Fichiers
Demandes liées
Révisions associées
consider all images to attach as remote (#13450)
Historique
Mis à jour par Serghei Mihai il y a plus de 7 ans
- Fichier 0001-consider-all-images-to-attach-as-remote-13450.patch 0001-consider-all-images-to-attach-as-remote-13450.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Patch rajoutant le hostname du tenant dans l'url de l'image rajoutée dans ckeditor. emails
se charge alors de joindre les fichiers au mail.
Mis à jour par Serghei Mihai il y a plus de 7 ans
- Fichier 0001-compute-email-message-body-once.patch 0001-compute-email-message-body-once.patch ajouté
Au passage je refactorise la construction du message: au lieu de compiler le template pour chaque abonné en y inserant le lien de désabonnement le corps du message est calculé une seule fois et le lien est remplacé par abonné.
Mis à jour par Frédéric Péters il y a plus de 7 ans
Je trouverais plus chouette que corbo aspire les images des fils RSS pour les avoir en local, ça permettrait ainsi d'être sûr de les avoir en https.
Pour ne pas calculer le message à chaque fois, ça doit être un autre ticket (a priori je ne vois pas d'utilisé à rendre le texte du placeholder configurable).
Mis à jour par Serghei Mihai il y a plus de 7 ans
Frédéric Péters a écrit :
Je trouverais plus chouette que corbo aspire les images des fils RSS pour les avoir en local, ça permettrait ainsi d'être sûr de les avoir en https.
Je ne voudrais pas avoir à gérer des situations ou une image change mais pas son nom.
Pour ne pas calculer le message à chaque fois, ça doit être un autre ticket (a priori je ne vois pas d'utilisé à rendre le texte du placeholder configurable).
Ok, je fais un ticket à part.
Mis à jour par Frédéric Péters il y a plus de 7 ans
Je ne voudrais pas avoir à gérer des situations ou une image change mais pas son nom.
Alors la récupérer à chaque fois que la mise à jour du fil est demandée. Ou si ça ne suffit pas, faire proxy pour la récupérer à la volée; genre passer sur toutes les URL et les transformer en /foobar/<hash> et ajouter (hash, url d'origine) dans une table.
Mis à jour par Serghei Mihai il y a plus de 7 ans
Je ne suis pas sûr de voir l'interet de récuperer les images chez nous et de les servir ensuite.
Mis à jour par Frédéric Péters il y a plus de 7 ans
Je propose deux options, tu dis non aux deux ? Parce que pour les deux, l'intérêt c'est pouvoir servir les images en https, éviter les alertes sur le contenu mixte voire le non-chargement des images.
Mis à jour par Serghei Mihai il y a plus de 7 ans
Ok, je vois. C'est pour l'affichage des images dans le flux RSS emis par corbo. Je refais le patch dans #12919
Mis à jour par Serghei Mihai il y a plus de 7 ans
- Fichier 0001-store-remote-images-on-annonce-save-13450.patch 0001-store-remote-images-on-annonce-save-13450.patch ajouté
- Fichier 0002-consider-all-images-to-attach-as-remote-13450.patch 0002-consider-all-images-to-attach-as-remote-13450.patch ajouté
D'abord un patch qui télécharge toutes les images "exterieures" lors de la création d'une annonce. Cela complète l'idée de télécharger les images des flux RSS (#12919).
Ensuite emails
prend la main pour joindre les fichiers au mail lors de l'envoi.
Mis à jour par Frédéric Péters il y a plus de 7 ans
Ce n'était pas le cas dans le code d'avant mais il faut en fait gérer le cas où requests.get() ne retourne pas une 200.
Mis à jour par Thomas Noël il y a plus de 7 ans
« image_name = os.path.basename(img.attrib['src']) » ça me semble un peu casse-gueule avec des src du genre https://machin/truc/logo.png qui risque de se retrouver dix mille fois (ie des logo.png différents sur des sites et uri différentes, alors que le storage est unique) ?
Par ailleurs je comprends pas trop pourquoi on ne fait pas ça lors du système qui envoie le mail (un outil générique utils.send_html_email). Ici on se retrouve avec des machineries qui peuvent bien planter (host not found & co lors du requests.get) dans un save(), pas facile à remonter ("idéalement une alerte «il y a eu une erreur lors de la génération du mail»")... Bon, ça me semble un peu bizarre, mais j'ai pas suivi l'affaire.
Mis à jour par Serghei Mihai il y a plus de 7 ans
Thomas Noël a écrit :
« image_name = os.path.basename(img.attrib['src']) » ça me semble un peu casse-gueule avec des src du genre https://machin/truc/logo.png qui risque de se retrouver dix mille fois (ie des logo.png différents sur des sites et uri différentes, alors que le storage est unique) ?
Dans ce cas je vérifier les checksums de ce logo.png et un logo.png distant. S'ils différent je laisse le storage le sauvegarder sous un nom différent, genre logo_dfdsfs.png
et me retourner le nom de ce nouveau fichier.
Par ailleurs je comprends pas trop pourquoi on ne fait pas ça lors du système qui envoie le mail (un outil générique utils.send_html_email). Ici on se retrouve avec des machineries qui peuvent bien planter (host not found & co lors du requests.get) dans un save(), pas facile à remonter ("idéalement une alerte «il y a eu une erreur lors de la génération du mail»")... Bon, ça me semble un peu bizarre, mais j'ai pas suivi l'affaire.
L'idée du téléchargement des images lors des création des articles vient du fait que les annonces peuvent être visualisées dans un flux RSS visualisé dans une appli HTTPs, la cellule Feed
de combo par exemple. Si les images dans le flux d'origine sont servies en HTTP elles risquent de ne pas s'afficher dans le lecteur en HTTPS.
Mis à jour par Serghei Mihai il y a plus de 7 ans
- Fichier 0001-store-remote-images-on-annonce-save-13450.patch ajouté
Premier patch refait avec la vérification du code de retour lors du téléchargement de l'image.
Mis à jour par Serghei Mihai il y a plus de 7 ans
- Fichier
0001-store-remote-images-on-annonce-save-13450.patchsupprimé
Mis à jour par Serghei Mihai il y a plus de 7 ans
Mis à jour par Frédéric Péters il y a plus de 7 ans
Mettons une première entrée avec une première image, 2016/photo.jpeg. Le fichier n'existe pas, save() crée un fichier photo.jpeg, c'est ok.
Mettons une deuxième entrée avec une deuxième image, 2017/photo.jpeg. Le contenu est différent du image_name (photo.jpeg, au-dessus), donc storage.save() est appelé, et se trouve créer un nouveau fichier. À chaque appel de .save().
Ma proposition serait de nommer les fichiers de manière stable et unique (images/<id de l'objet>/<compteur>_<basename>).
Mis à jour par Serghei Mihai il y a plus de 7 ans
- Fichier 0001-store-remote-images-on-annonce-save-13450.patch 0001-store-remote-images-on-annonce-save-13450.patch ajouté
Ok
Mis à jour par Serghei Mihai il y a environ 7 ans
- Lié à Bug #15113: erreur lors de l'envoi des mails contentant des images distantes ajouté
Mis à jour par Serghei Mihai il y a environ 7 ans
- Priorité changé de Normal à Haut
Patch à jour, rebasé sur le master.
Mis à jour par Frédéric Péters il y a environ 7 ans
Patch à jour, rebasé sur le master.
Manque le nouveau patch ? Ou l'ancien est en fait toujours ok ?
Mis à jour par Benjamin Dauvergne il y a environ 7 ans
Par rapport aux remarques de Fred il me semble qu'il manque l'idée d'ajouter l'id de l'objet dans le chemin vers le fichier statique.
Mis à jour par Serghei Mihai il y a environ 7 ans
- Fichier 0001-store-remote-images-on-annonce-save-13450.patch 0001-store-remote-images-on-annonce-save-13450.patch ajouté
C'est fait dans la méthode images_path
mais dans les tests ce n'est pas clair qu'on cherche que l'image soit dans le bon chemin.
Les voici à jour.
Mis à jour par Serghei Mihai il y a environ 7 ans
- Lié à Bug #13876: poser les fichiers images sortis des fils dans un sous-répertoire ajouté
Mis à jour par Serghei Mihai il y a environ 7 ans
- Statut changé de En cours à Résolu (à déployer)
commit 4dc11b9da4a372169b5cc342eb48fe24e49b25ff Author: Serghei Mihai <smihai@entrouvert.com> Date: Mon Feb 27 18:55:52 2017 +0100 store remote images on annonce save (#13450)
Mis à jour par Frédéric Péters il y a environ 7 ans
C'est compliqué quand il y a plusieurs patchs dans un même ticket, au final, celui-ci, c'est bien 0001-store-remote-images-on-annonce-save-13450.patch et 0002-consider-all-images-to-attach-as-remote-13450.patch ?
Ça serait bien d'attacher les patchs rebasés, parce que le patch ne s'applique pas sur master (déjà bêtement il contient tests/media/another_logo.png qui est arrivé dans le dépôt par ailleurs).
Mis à jour par Frédéric Péters il y a environ 7 ans
Et donc, maintenant qu'un seul des patchs a été poussé, quid de 0002-consider-all-images-to-attach-as-remote-13450.patch ?
Mis à jour par Serghei Mihai il y a environ 7 ans
- Fichier 0001-consider-all-images-to-attach-as-remote-13450.patch 0001-consider-all-images-to-attach-as-remote-13450.patch ajouté
- Statut changé de Résolu (à déployer) à En cours
Mouais... groc micmac dans mon depot local.
Voici le 0002 à jour.
Mis à jour par Serghei Mihai il y a environ 7 ans
- Statut changé de En cours à Résolu (à déployer)
commit b56be82b22e1427a10904fec5d7c3fc13c26c049 Author: Serghei Mihai <smihai@entrouvert.com> Date: Fri Mar 3 12:23:15 2017 +0100 consider all images to attach as remote (#13450)
store remote images on annonce save (#13450)