Projet

Général

Profil

Bug #13450

considérer toutes les images dans le corps d'une annonce comme "distantes"

Ajouté par Serghei Mihai il y a plus de 7 ans. Mis à jour il y a presque 7 ans.

Statut:
Fermé
Priorité:
Haut
Assigné à:
Version cible:
-
Début:
04 octobre 2016
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Lié à Corbo - Bug #15113: erreur lors de l'envoi des mails contentant des images distantesFermé23 février 2017

Actions
Lié à Corbo - Bug #13876: poser les fichiers images sortis des fils dans un sous-répertoireFermé06 novembre 2016

Actions

Révisions associées

Révision 4dc11b9d (diff)
Ajouté par Serghei Mihai il y a environ 7 ans

store remote images on annonce save (#13450)

Révision b56be82b (diff)
Ajouté par Serghei Mihai il y a environ 7 ans

consider all images to attach as remote (#13450)

Historique

#1

Mis à jour par Serghei Mihai il y a plus de 7 ans

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.

#2

Mis à jour par Serghei Mihai il y a plus de 7 ans

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

#3

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

#4

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.

#5

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.

#7

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.

#8

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.

#9

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

#10

Mis à jour par Serghei Mihai il y a plus de 7 ans

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.

#11

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.

#12

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.

#13

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.

#14

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.

#15

Mis à jour par Serghei Mihai il y a plus de 7 ans

  • Fichier 0001-store-remote-images-on-annonce-save-13450.patch supprimé
#17

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

#19

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é
#20

Mis à jour par Serghei Mihai il y a environ 7 ans

  • Priorité changé de Normal à Haut

Patch à jour, rebasé sur le master.

#21

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 ?

#22

Mis à jour par Serghei Mihai il y a environ 7 ans

L'ancien est toujours bon.

#23

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.

#24

Mis à jour par Serghei Mihai il y a environ 7 ans

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.

#25

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é
#26

Mis à jour par Benjamin Dauvergne il y a environ 7 ans

Ack alors.

#27

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

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

#29

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 ?

#30

Mis à jour par Serghei Mihai il y a environ 7 ans

Mouais... groc micmac dans mon depot local.
Voici le 0002 à jour.

#31

Mis à jour par Frédéric Péters il y a environ 7 ans

Ack pour ce patch.

#32

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

Mis à jour par Serghei Mihai il y a presque 7 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF