mviewer / mviewerstudio

mviewer generator
GNU General Public License v3.0
15 stars 25 forks source link

MEG - VSR - Générateur de template - bug publication - URL MST relative et erronée #226

Closed spelhate closed 1 year ago

spelhate commented 1 year ago

Ma configuration :

CONF_PATH_FROM_MVIEWER=apps/store
EXPORT_CONF_FOLDER=/home/debian/mviewer/apps/store/
MVIEWERSTUDIO_PUBLISH_PATH=/home/debian/mviewer/apps/prod/
CONF_PUBLISH_PATH_FROM_MVIEWER=apps/prod
DEFAULT_ORG=megalis2

J'arrive sans difficulté à publier une application mviewer basique ce qui me laisse penser que je n'ai pas de problème de configuration. Je retorouve bien toute le dossier de l'application dans /home/debian/mviewer/apps/prod/megalis2/publish_test

En revanche les templates sont inopérants dans l'application publiée. Exemple de balise template créée par studio

<template url="apps/public/megalis2/publish_test/templates/lycee.mst" />

alors que ça devrait être :

<template url="https://delib.csm.ovh/mviewer/apps/prod/megalis2/publish_test/templates/lycee.mst" />

je ne comprends pas d'où vient le /public/

Gaetanbrl commented 1 year ago

En effet c'est étrange, je vais regarder.

Gaetanbrl commented 1 year ago

tu peux me partager ta config front stp @spelhate ?

spelhate commented 1 year ago

pour le service :

[Service]
Environnement="LOG_LEVEL=INFO"
Environnement="CONF_PATH_FROM_MVIEWER=apps/store"
Environment="EXPORT_CONF_FOLDER=/home/debian/mviewer/apps/store/"
Environnement="CONF_PUBLISH_PATH_FROM_MVIEWER=apps/prod"
Environment="MVIEWERSTUDIO_PUBLISH_PATH=/home/debian/mviewer/apps/prod/"
Environment="DEFAULT_ORG=megalis2"

config.son

{
    "app_conf": {
        "studio_title": "Mviewer STudio Megalis",
        "mviewer_version":  "3.9",
        "mviewerstudio_version":  "3.2",
        "api": "api/app",
        "store_style_service": "api/style",
        "mviewer_instance": "https://delib.csm.ovh/mviewer/",
        "publish_url": "?config=apps/prod/{{config}}.xml",
        "conf_path_from_mviewer": "apps/store/",
        "mviewer_short_url": {
            "used": true,
            "apps_folder": "store",
            "public_folder": "prod"
        },
        "external_themes": {
            "used": true,
            "url": "https://geobretagne.fr/minicatalog/csv"
        },
        "user_info": "api/user",
        "proxy": "/mviewerstudio/proxy/?url=",
        "user_info_visible": false,
        "app_form_placeholders": {
            "app_title": "Kartenn",
            "logo_url": "https://geobretagne.fr/pub/logo/region-bretagne.jpg",
            "help_file": "mviewer_help.html"
        },
        "map": {
            "center": [-307903.74898791354, 6141345.088741366],
            "zoom": 7
        },
        "baselayers": {
            "positron": {
                "id": "positron",
                "thumbgallery": "img/basemap/positron.png",
                "title": "CartoDb",
                "label": "Positron",
                "type": "OSM",
                "url": "https://{a-c}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png",
                "attribution": "Map tiles by  <a href=\"https://cartodb.com/attributions\">CartoDb</a>, under  <a href=\"https://creativecommons.org/licenses/by/3.0/\">CC BY 3.0 </a>"
            },
            "ortho_ign": {
                "id": "ortho_ign",
                "thumbgallery": "img/basemap/ortho.jpg",
                "title": "IGN",
                "label": "Photographies aériennes IGN",
                "type": "WMTS",
                "url": "https://wxs.ign.fr/choisirgeoportail/geoportail/wmts?",
                "layers": "ORTHOIMAGERY.ORTHOPHOTOS",
                "format": "image/jpeg",
                "fromcapacity": "false",
                "attribution": "<a href='https://geoservices.ign.fr' target='_blank'><img src='https://geoservices.ign.fr/images/logoIGN.png'></a>",
                "style": "normal",
                "matrixset": "PM",
                "maxzoom": "22"
            },
            "darkmatter": {
                "id": "darkmatter",
                "thumbgallery": "img/basemap/darkmatter.png",
                "title": "CartoDb",
                "label": "Dark Matter",
                "type": "OSM",
                "url": "https://{a-c}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png",
                "maxzoom": "20",
                "attribution": "Map tiles by  <a href=\"https://cartodb.com/attributions\">CartoDb</a>, under  <a href=\"https://creativecommons.org/licenses/by/3.0/\">CC BY 3.0 </a>"
            },
            "esriworldimagery": {
                "id": "esriworldimagery",
                "thumbgallery": "img/basemap/esriworldwide.jpg",
                "title": "Esri",
                "label": "Esri world imagery",
                "type": "OSM",
                "url": "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",
                "attribution": "<a href=\"https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9\" target=\"_blank\" >Esri world imagery</a>"
            },
            "ortho1": {
                "id": "ortho1",
                "thumbgallery": "img/basemap/ortho.jpg",
                "title": "GéoBretagne",
                "label": "Photo aérienne actuelle GéoBretagne",
                "type": "WMTS",
                "url": "https://tile.geobretagne.fr/gwc02/service/wmts",
                "layers": "satellite",
                "format": "image/png",
                "style": "_null",
                "matrixset": "EPSG:3857",
                "fromcapacity": "false",
                "attribution": "<a href=\"https://geobretagne.fr/geonetwork/srv/fre/catalog.search#/metadata/3a0ac2e3-7af1-4dec-9f36-dae6b5a8c731\" target=\"_blank\" >partenaires GéoBretagne - Megalis Bretagne - IGN - PlanetObserver</a>"
            },
            "ortho_ir": {
                "id": "ortho_ir",
                "thumbgallery": "img/basemap/ir.jpg",
                "title": "GéoBretagne",
                "label": "Photo aérienne infra rouge GéoBretagne",
                "type": "WMTS",
                "url": "https://geobretagne.fr/geoserver/gwc/service/wmts",
                "layers": "photo:ir-composite",
                "format": "image/jpeg",
                "style": "_null",
                "matrixset": "EPSG:3857",
                "fromcapacity": "false",
                "attribution": "<a href=\"https://geobretagne.fr/geonetwork/srv/fre/catalog.search#/metadata/434b82a8-8d3c-4d9f-9eb3-0485f1a63eb6\" target=\"_blank\" >partenaires GéoBretagne - Megalis Bretagne - IGN</a>"
            },
            "osm_google": {
                "id": "osm_google",
                "thumbgallery": "img/basemap/osm_google.png",
                "title": "GéoBretagne",
                "label": "OpenStreetMap GéoBretagne",
                "type": "WMS",
                "url": "https://osm.geobretagne.fr/gwc01/service/wms",
                "layers": "osm:google",
                "format": "image/png",
                "attribution": "GéoBretagne. Données : les contributeurs d'<a href=\"https://www.openstreetmap.org/\" target=\"_blank\">OpenStreetMap </a>,  <a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">ODbL </a>"
            },
            "osm": {
                "id": "osm",
                "thumbgallery": "img/basemap/osm.png",
                "title": "OSM",
                "label": "OpenStreetMap",
                "type": "OSM",
                "url": "https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png",
                "attribution": "Données : les contributeurs d'<a href=\"https://www.openstreetmap.org/\" target=\"_blank\">OpenStreetMap </a><a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">ODbL </a>"
            },
            "osm_bzh": {
                "id": "osm_bzh",
                "thumbgallery": "img/basemap/osm.png",
                "title": "OSM BZH",
                "label": "OpenStreetMap en breton",
                "type": "OSM",
                "maxzoom": "20",
                "url": "https://tile.openstreetmap.bzh/br/{z}/{x}/{y}.png",
                "attribution": "Kendaolerien <a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">OpenStreetMap</a>"
            },
            "plan_ign": {
                "id": "plan_ign",
                "thumbgallery": "img/basemap/scan-express.jpg",
                "title": "IGN",
                "label": "Plan IGN v2",
                "type": "WMTS",
                "url": "https://wxs.ign.fr/choisirgeoportail/geoportail/wmts?",
                "layers": "GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2",
                "format": "image/png",
                "fromcapacity": "false",
                "attribution": "<a href='https://geoservices.ign.fr' target='_blank'><img src='https://geoservices.ign.fr/images/logoIGN.png'></a>",
                "style": "normal",
                "matrixset": "PM",
                "maxzoom": "22"
            }
        },
        "data_providers": {
            "csw": [{
                    "title": "Catalogue GéoBretagne",
                    "url": "https://geobretagne.fr/geonetwork/srv/fre/csw",
                    "baseref": "https://geobretagne.fr/geonetwork/srv/eng/catalog.search?node=srv#/metadata/"
                },
                {
                    "title": "Catalogue Région Bretagne",
                    "url": "https://kartenn.region-bretagne.fr/geonetwork/srv/fre/csw",
                    "baseref": "https://kartenn.region-bretagne.fr/geonetwork/srv/fre/catalog.search#/metadata/"
                },
                {
                    "title": "Catalogue de la Région Grand Est",
                    "url": "https://www.geograndest.fr/geonetwork/srv/fre/csw",
                    "baseref": "https://www.geograndest.fr/geonetwork/srv/eng/catalog.search?node=srv#/metadata/"
                },
                {
                    "title": "Catalogue de la Région Pays de la Loire",
                    "url": "https://www.geopal.org/geonetwork/srv/fre/csw",
                    "baseref": "https://www.geopal.org/geonetwork/srv/eng/catalog.search?node=srv#/metadata/"
                }
            ],
            "wms": [{
                "title": "Serveur WMS de la Région",
                "url": "https://ows.region-bretagne.fr/geoserver/rb/wms"
            }]
        },
        "default_params": {
            "layer": {
                "info_format": "text/html"
            }
        }
    }
}
Gaetanbrl commented 1 year ago

merci

spelhate commented 1 year ago

Testé sur VSR Kartenn pour une même application template en mode brouillon = ok (url absolue) template en mode "en ligne" = ko (url relative)

Gaetanbrl commented 1 year ago

template en mode brouillon = ok (url absolue) template en mode "en ligne" = ko (url relative)

Je pense qu'il y a en effet un inversement. L'URL devrait être absolue pour le mode en ligne et non brouillon.

Gaetanbrl commented 1 year ago

Analyse du bug

Lors de mes tests les URLs fonctionnent dans les deux cas.

Après réflexion, il est vrai que j'avais mis les URL absolu pour le mode brouillon car pour la prévisualisation, on utilise un identifiant temporaire (= 1 répertoire temporaire). Donc pour ne pas recréer l'URL en preview, j'ai mis des URL absolues. L'URL absolue devrait fonctionner en l'état, c'est le cas chez nous.

En local

http://127.0.0.1:5051/#prod/megalis2/226 <template url="apps/prod/megalis2/226/templates/lycee.mst"/>

Sur gis.jdev.fr

<template url="https://gis.jdev.fr/mviewer/apps/store/jdev/d0c421015f3b/test2/templates/lycee.mst"/>

https://gis.jdev.fr/mviewer/#public/jdev/test2 <template url="apps/public/jdev/test2/templates/lycee.mst"/>

Gaetanbrl commented 1 year ago

... suite du commentaire précédent

Voici la config front gis.jdev :

https://gis.jdev.fr/mviewerstudio/apps/config.json

Voici la config gunicorn du serveur :

[Service]
User=mviewer
Environment="EXPORT_CONF_FOLDER=/var/www/mviewer/apps/store/"
Environment="CONF_PUBLISH_PATH_FROM_MVIEWER=apps/public"
Environment="CONF_PATH_FROM_MVIEWER="apps/store"
Environment="MVIEWERSTUDIO_PUBLISH_PATH=/var/www/mviewer/apps/public"
Environment="DEFAULT_ORG=public"
WorkingDirectory=/home/mviewer/mviewerstudio/srv/python
ExecStart=.....

Fonctionnement = OK

Gaetanbrl commented 1 year ago

En réponse à ton premier commentaire de description d'issue @spelhate :

je ne comprends pas d'où vient le /public/

Je ne vois pas ton exemplle avec /public/. Où vois-tu ce chemin ?

spelhate commented 1 year ago

Dans le xml

spelhate commented 1 year ago

https://delib.csm.ovh/mviewer/apps/prod/megalis2/publish.xml?_dc=1685980969963

spelhate commented 1 year ago

image

spelhate commented 1 year ago

Lors de mes tests les URLs fonctionnent dans les deux cas.

Pas d'accord car tu as laissé la valeur par défaut : apps/public pour CONF_PUBLISH_PATH_FROM_MVIEWER

spelhate commented 1 year ago

dans mon cas c'est apps/prod comme dans la conf transmise.

Gaetanbrl commented 1 year ago

Oui vu mais j'ai testé en local et ca fonctionne avec /prod (voir ici). je vais tester sur gis.jdev.

Gaetanbrl commented 1 year ago

test réalisé avec /prod :

https://gis.jdev.fr/mviewerstudio/index.html#

<template url="apps/prod/jdev/226/templates/lycee.mst"/>

Config gunicorn :

[Service]
User=mviewer
Environment="EXPORT_CONF_FOLDER=/var/www/mviewer/apps/store/"
Environment="CONF_PUBLISH_PATH_FROM_MVIEWER=apps/prod"
Environment="CONF_PATH_FROM_MVIEWER="apps/store"
Environment="MVIEWERSTUDIO_PUBLISH_PATH=/var/www/mviewer/apps/prod"
Environment="DEFAULT_ORG=public"
WorkingDirectory=/home/mviewer/mviewerstudio/srv/python

Config front :

https://gis.jdev.fr/mviewerstudio/apps/config.json

image

spelhate commented 1 year ago

je constate que dans ta conf, il n'y a pas de / à la fin de /var/www/mviewer/apps/prod" alors que moi j'en ai un.

spelhate commented 1 year ago

J'ai trouvé. Ca venait de ma conf : Environnement="CONF_PUBLISH_PATH_FROM_MVIEWER=apps/prod" J'ai écrit Environnement au lieu de Environment et du coup Studio appliquait le paramètre par défaut = public.

spelhate commented 1 year ago

Je laisse l'issue ouverte car reste le problème de l'URL relative.

Gaetanbrl commented 1 year ago

Je laisse l'issue ouverte car reste le problème de l'URL relative.

Elle ne fonctionne pas c'est ca ?

lecault commented 1 year ago

Si mais c'est toujours une url relative dans la version publiée. Exemple : <template url="apps/public/RB/vn/templates/bief.mst" />

Et <template url="https://kartenn.region-bretagne.fr/studio-mviewer/apps/store/RB/777be7aec7c1/vn/templates/ecluse.mst" ></template> dans la version brouillon.

Gaetanbrl commented 1 year ago

Je pense qu'un échange est nécessaire pour vous expliquer ce choix. En l'état je ne comprend pas la nécessité d'avoir une URL absolu pour les templates.

Gaetanbrl commented 1 year ago

template en mode brouillon = ok (url absolue) template en mode "en ligne" = ko (url relative)

Je pense qu'il y a en effet un inversement. L'URL devrait être absolue pour le mode en ligne et non brouillon.

Vérifié hier, c'est bien normal.

Voici la réflexion entamée et fonctionnelle qu'on doit peut être revoir ensemble :

Publication -> URL Absolu : permet le partage notamment avec le système de thématique externe. Brouillon -> URL Relative : permet d'utiliser le template du mviewer courant, les brouillons n'étant pas à utiliser pour les thématiques externes

spelhate commented 1 year ago

Pas sûr de bien comprendre. pour moi c'était déjà l'objectif visé :

Voici la réflexion entamée et fonctionnelle qu'on doit peut être revoir ensemble : Publication -> URL Absolu : permet le partage notamment avec le système de thématique externe. Brouillon -> URL Relative : permet d'utiliser le template du mviewer courant, les brouillons n'étant pas à utiliser pour les thématiques externes

Gaetanbrl commented 1 year ago

Suite au point de ce jour, il a été validé par Megalis / GeoB que le ressources de publication sont considérées comme dans la même instance et donc accessible avec le paramètre mviewer_instance de la config front du studio :

"mviewer_instance": "https://delib.csm.ovh/mviewer/",

Les modifications ont été apportées ce jour sur la branche de vsr pour obtenir :

Exemple : https://gis.jdev.fr/mviewer/apps/prod/jdev/266.xml <template url="https://gis.jdev.fr/mviewer/apps/prod/jdev/266/templates/lycee.mst"/>

Exemple : https://gis.jdev.fr/mviewer/apps/store/jdev/d054ef3bd265/preview/dfbd18b8-0475-11ee-9a0c-fa163e3fca1c.xml <template url="apps/store/jdev/d054ef3bd265/266/templates/lycee.mst"/>

Gaetanbrl commented 1 year ago

A tester donc, mais je pense que ma modifications devrait correspondre au besoin.

lecault commented 1 year ago

J'ai testé sur ma version après git pull et j'ai des soucis. J'ai recréé un projet

En mode brouillon : <template url="apps/store/undefined" > En mode publié : <template url="apps/public/RB/test_lien/templates/structure_ess.mst" />

Du coup c'est même pire, la fiche ne fonctionne plus en mode brouillon.

J'aurai du réagir hier mais pour moi, il faut conserver les urls absolues en brouillon car un utilisateur lambda n'a pas moyen de télécharger le XML publié, seulement le brouillon s'il souhaite pour une raison quelconque déplacer le XML.

lecault commented 1 year ago

Testé ce matin avec le nouveau comportement. j'ai bien 2 urls absolues ce qui me permet de déplacer un XML au besoin.