GeotrekCE / Geotrek-admin

Paths management for National Parks and Tourism organizations
https://geotrek.fr
BSD 2-Clause "Simplified" License
130 stars 76 forks source link

[Question] Import massif de photos d'illustrations #4243

Open eprouteau opened 1 month ago

eprouteau commented 1 month ago

Bonjour, toujours dans ma démarche d'import massif, je tente de m'attaquer à l'import des photos associées aux itinéraires (provenant de l'api tourinsoft)

Avant de généré un script d'automatisation, je tente manuellement avec saisie en base et upload via SFTP.

Etape 1 : Je produis 3 photos issues de l'orignal (400px, 120px crop et 150px)

Etape 2 : Je génère une chaine de caractère aléatoire + renommage des photos

Etape 3 : J'insère les infos dans les tables common_attachment, easy_thumbnails_source,easy_thumbnails_thumbnail + info de mise en avant dans la table common_attachment

Suite à ces manips, j'ai bien mon fichier qui apparait dans l'admin sauf la miniature dans la liste et coté geotrek rando, je n'ai pas non plus la miniature dans la popup et la liste des itinéraires, mais je l'ai dans le descriptif.

Auriez vous des infos sur le mécanisme de génération et gestion des photos ? L'emplacement du code côté geotrek-admin permettant leur gestion que je pourrais récupérer ?

Bonne journée,

camillemonchicourt commented 1 month ago

Pourquoi ne pas plutôt faire un parser d'import branché sur l'API Tourinsoft ? Il en existe déjà et cela gère l'import des images, etc...

La génération des vignettes est gérée par Python/Django (sur lesquels s'appuient aussi les parsers) et donc ne sont pas exécutés quand on importe les images directement dans la BDD

camillemonchicourt commented 1 month ago

Exemple ici : https://github.com/GeotrekCE/Geotrek-admin/issues/2534

Améliorable dans ton cas car tu n'as pas la segmentation dynamique donc tu peux aussi importer directement la géométrie des itinéraires si elle est dispo dans Tourinsoft.

eprouteau commented 1 month ago

J'avais effectivement regardé le principe des parser mais ayant des compétences limité en python je n'étais pas allez plus loin et d'où mon choix d'import de l'ensemble des infos geo et alpha via bdd.

Les données Tourinsoft seront finalement intégrées dans notre outil de gestion au préalable afin de gérer d'éventuels doublon entre saisie dans le SIT et gestion communale, EPCI.

Du coup, les photos proviendront de notre base de donnée (1-n photo par itinéraire, poi, offre, ... ) exposées en api json (très simple : unepar photo avec une url et un id d'objet).

Je pense que par contre l'import des photos peu effectivement être réalisé via un parser ce qui limite son dev.

Je me pose du coup pas mal de question sur les parsers :

Bonne journée,

gbvt commented 3 weeks ago

Bonjour @eprouteau, merci pour ce partage d'idées ! Justement, j'en viens aussi à ces tests et manipulations en SQL brut. Mon cas d'usage est un peu différent : j'ai une image générique que je veux utiliser pour une 100aine d'activités Outdoor. Il m'est donc inutile de faire la manipulation manuelle 100x, et surtout faire 100 upload du même fichier serait un peu bête.

J'ai donc uploadé une seule fois le fichier de base (je n'ai pas encore bossé sur les thumbnails), et j'ai fait un script SQL qui utilise ce même fichier pour 100 sites outdoor.

Je suis donc plutôt sur un lien 1 attachment <> N outdoor_sites

eprouteau commented 2 weeks ago

@gbvt de mon cote je bloque sur l'affichage de la miniature côté geotrek rando dans la popup carte et la liste déroulante de gauche. J'ai essayé de creuser un import python mais je n'ai pas assez de compétences en dev.

Du coup, je n'arrive pas à trouver ce qu'il pourrait manquer en base pour l'affichage de la miniature. Est ce les caractéristiques des photos que je génère en amont ? C'est pour ca que j'aurais aimé connaitre ce qui se passe en back lors de l'import via l'admin pour le reproduire via un petit script python (plus simple et plus facilement adaptable à notre outil interne et également pour mieux gérer les photos que je veux ou non mettre à jour) pour la génération des miniatures couplé à un script SQL d'ajout en base