Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SettingsManager] Création d'un module héritant de PyQt.QtCore.QSettings #258

Closed
54 tasks done
SimonSAMPERE opened this issue Sep 16, 2019 · 14 comments
Closed
54 tasks done
Assignees
Labels
enhancement Amélioration du fonctionnement existant features Nouvelles fonctionnalités on premises relatif à la version on-premises
Milestone

Comments

@SimonSAMPERE
Copy link
Collaborator

SimonSAMPERE commented Sep 16, 2019

Objectif

Modulariser et centraliser la gestion des QSettings. Gérer la persistence des différents paramètres. Dans certains cas, on veut que les paramètres puisse être inscrit dans un fichier JSON en plus des QSettings et inversement. Deux cas de figure :

  1. Plugin configuré sur un poste puis zippé et installé sur un autre poste. Pour que le paramétrage effectué sur le premier poste se répercute sur le second, il faut que les paramètres en question aient été stockés dans des fichiers JSON qui se trouvent dans le ZIP.

  2. Plugin mis à jour. Il y a un risque que tous les paramètre stockés dans des fichiers JSON soient supprimés lorsque ces fichiers seront écrasés. Il faut donc les stocker également dans les QSettings pour pourvoir les remettre dans les fichiers JSON lors du premier re-démarrage du plugin après la mise à jour.

L'idéal serait donc de dupliquer tous les paramètres et de décider pour chacun si c'est le JSON ou le QSetting qui doit prévaloir dans chaque situation.

Il faut également penser à la récupération de la valeur des paramètres stockés dans le format de la précédente version du plugin Isogeo.

Principe

Créer une nouvelle classe pour gérer le stockage et la récupération de tous les paramètres dans les QSettings, cela concerne :

  • les paramètres d'authentification
  • les recherches rapides et la recherche par défaut
  • les paramètres de connexion aux bdd
  • l'url du portail
  • le cache fichiers et services et PostGIS
  • les URLs Isogeo (API, app et help)

Le SettingsManager serat instancié dans le script de chaque module ayant besoin d’interagir avec les paramètres, comme c'est le cas avec le IsogeoPlgTools.
Dans chaque configuration, vérifier que la valeur des paramètres après installation/mise à jour est conforme aux SPEF.

Inventaire des paramètres

Paramètres natifs de QGIS
  • locale/userLocale
  • proxy/proxyEnabled
  • proxy/proxyType
  • proxy/proxyHost
  • proxy/proxyPort
  • qgis/style
  • PostgreSQL/connections/.../database
  • PostgreSQL/connections/.../host
  • PostgreSQL/connections/.../port
  • PostgreSQL/connections/.../username
  • PostgreSQL/connections/.../password
  • PostgreSQL/connections/.../service
  • PostgreSQL/connections/.../savePassword
  • PostgreSQL/connections/.../saveUsername
  • Oracle/connections/.../database
  • Oracle/connections/.../host
  • Oracle/connections/.../port
  • Oracle/connections/.../username
  • Oracle/connections/.../password
  • Oracle/connections/.../savePassword
  • Oracle/connections/.../saveUsername
  • projections/layerDefaultCrs
  • app/projections/defaultProjectCrs
Paramètres du plugin Isogeo
  • isogeo/user/editor
  • isogeo/settings/portal_base_url
  • isogeo/settings/add_metadata_url_portal
  • isogeo/settings/georelation
  • isogeo/env/api_base_url
  • isogeo/env/api_auth_url
  • isogeo/env/app_base_url
  • isogeo/env/help_base_url
  • isogeo/settings/background_map_url
  • isogeo/auth/app_id
  • isogeo/auth/app_secret
  • isogeo/settings/invalid_pgdb_conn
  • isogeo/settings/prefered_pgdb_conn
  • isogeo/settings/invalid_ora_conn
  • isogeo/settings/prefered_ora_conn
  • fichier config.json
    • api_base_url
    • api_auth_url
    • app_base_url
    • help_base_url
    • background_map_url
  • fichier db_connections.json
  • fichier quicksearches.json

SPET

  • Créer la classe SettingsManager héritant de PyQt.QtCore.QSettings. - 0,25j
  • Implémenter l'utilisation du SettingsManager en remplacement de PyQt.QtCore.QSettings dans tous les modules - 0,25j
    • Isogeo
    • Authenticator
    • DataBaseManager
    • MetadataDisplayer
    • PortalURLManager
    • SearchFormManager
    • IsogeoPlgTools
    • GeoServiceManager
    • ResultsManager
    • UserInformer --> nécessaire depuis qu'il ne prend plus la méthode tr en argument
  • Nettoyer les modules de l'import inutile de PyQt.QtCore.QSettings - 0,25j
    • LimitationsChecker
    • LayerAdder
  • Gérer les recherches rapides : - 2j
    • déplacer la manipulation du fichier quicksearches.json dans le SettingsManager
    • ajouter la création/renommage/suppression des recherches rapide dans les QSettings au SettingsManager
    • récupération si mise à jour du plugin : on fusionne le contenu des QSettings avec celui du quicksearches.json, si doublons, on conserve celui du quicksearches.json, sauf pour _current et Dernière recherche
    • implémenter l'utilisation du SettingsManager dans le QuickSearchManager
    • tester
      • création
      • renommage
      • suppression
      • mise à jour via un zip "standard"
        • pas de quicksearch.json + pas de quicksearch dans les QSettings
        • pas de quicksearch.json + des quicksearches dans les QSettings
      • mise à jour via un zip "custom"
        • quicksearch.json sans _current et Dernière recherche + pas de quicksearch dans les QSettings
        • quicksearch.json avec _current et Dernière recherche + des quicksearches dans les QSettings
  • Gérer l'URL du portail : on ajoute les paramètres concernés dans le fichier config.json - 1j
    • implémenter dans le SettingsManager une méthode de récupération de la valeur des paramètres concernés depuis le fichier config.json ou les QSettings avec prévalence des valeurs enregistrées dans le fichier config.json sur celles des QSettings en cas de conflit
    • implémenter dans le SettingsManager une méthode d'ajout et de modification des paramètres concernés dans les QSettings ET dans le fichier config.json
    • implémenter dans le PortalURLManager l'utilisation des méthodes susmentionnées du SettingsManager
  • Gérer les paramètres d'authentification et les URLs Isogeo : voir ce qu'on peut déplacer depuis l'Authenticator vers le SettingsManager - 2j
    • déplacer la manipulation du fichier config.json dans le SettingsManager
    • pour isogeo/env/api_base_url, isogeo/env/api_auth_url, isogeo/env/app_base_url et isogeo/env/help_base_url ajouter la prévalence des valeurs enregistrées dans les QSettings sur celles du fichier config.json en cas de conflit, uniquement si celles du fichier config.json sont les valeurs par défaut
    • pour les credentials on a actuellement prévalence des QSettings sur le fichier client_secrets.json, il faudrait faire l'inverse pour permettre d'écraser les credentials des utilisateurs via un déploiement massif en utilisant un ZIP
  • Gérer les paramètres de connexion aux bases de données - 1j
    • invalid_pgdb_conn, prefered_pgdb_conn, invalid_ora_conn et prefered_ora_conn restent uniquement dans les QSettings
    • pas de migration du contenu du fichier db_connections.json dans les QSettings
    • déplacer la manipulation du fichier db_connections.json dans le SettingsManager
  • Gérer le cache des ressources inaccessibles (fichiers, services et bases PostGIS) dans le fichier cache.json - 2j
    • passer le cache des fichiers inaccessible uniquement dans les QSettings, potentiellement sous forme de liste dans isogeo/user/unreachable_filepath
      • ajout d'un chemin de fichier inaccessible (attention à la gestion des "\")
      • récupération des chemins inaccessibles (attention à la gestion des "\")
      • vider le cache des chemins inaccessibles
    • à gérer en cas de mise à jour (à déterminer : côté SettingsManager ou CacheManager)
      • migration vers les QSettings des infos stockées dans le fichier cache.json
      • suppression du fichier cache.json
    • à voir si actuellement le fichier cache.json est vraiment utile pour les services (cached_unreach_service) et les bases PostGIS (cached_unreach_postgis) inaccessibles, selon il faudra nettoyer le CacheManager ou faire le passage du cache uniquement dans les QSettings
  • Rationaliser la sollicitation du SettingsManager en voyant si une même instance ne peut pas être transmise d'un module à l'autre dans certains cas
  • Faire des tests de mise à jour depuis un ZIP
  • Supprimer du dépôt les fichiers JSON

Tests

Pour tester correctement il va falloir publier le plugin QGIS dans le dépôt des extensions QGIS sous forme de version expérimentale.

Voici les différentes cas d'installation à tester :

  1. ✔️ première installation du plugin en version 3.5.0, en installant un ZIP non-personnalisé via le gestionnaire des extensions
  2. ✔️ première installation du plugin en version 3.5.0, en installant un ZIP personnalisé via le gestionnaire des extensions
  3. mise à jour du plugin personnalisé en version 3.4.0, en téléchargeant la version 3.5.0 via le gestionnaire des extensions
  4. ✔️ mise à jour du plugin personnalisé en version 3.4.0, en installant un ZIP non-personnalisé de la 3.5.0 via le gestionnaire des extensions
  5. ✔️ mise à jour du plugin personnalisé en version 3.4.0, en installant un ZIP personnalisé de la 3.5.0 via le gestionnaire des extensions
  6. ✔️ mise à jour du plugin personnalisé en version 3.5.0, en installant un ZIP non-personnalisé de la 3.5.0 via le gestionnaire des extensions
  • "ZIP non-personnalisé" : tel qu'on peut le trouver sur le SharePoint

  • "ZIP personnalisé" :

    • avec des recherches rapides enregistrées dans _user/quicksearches.json
    • avec un URL de portail renseignée dans config.json (portal_base_url)
    • avec une option (0 ou 1) d'ajout de l'URL du portail renseignée dans config.json (add_metadata_url_portal)
    • avec des connections de BDD enregistrées dans _user/db_connections.json
  • "plugin personnalisé" :

    • avec des recherches rapides, si cas 4 ou 6 :
      • certaines avec des noms ne figurant pas dans le quicksearches.json du ZIP personnalisé --> elles doivent être conservées
      • certaines avec des noms figurant dans dans le quicksearches.json du ZIP personnalisé mais des critères de recherche différents --> le ZIP personnalisé prévaut donc écrasement des recherches rapides initiale au profit de celles issues du ZIP personnalisé
    • avec une URL de portail configurée, si cas 4 ou 6 :
      • URL du portail différente de celle figurant dans le config.json du ZIP personnalisé (portal_base_url) --> le ZIP personnalisé prévaut donc la valeur initiale est remplacée par celle figurant dans le config.json du ZIP personnalisé
      • valeur de la case "Ajouter l'URL..." différente de celle figurant dans le config.json du ZIP personnalisé (add_metadata_url_portal) --> le ZIP personnalisé prévaut donc la valeur initiale est remplacée par celle figurant dans le config.json du ZIP personnalisé
    • avec des connexions de BDD configurées dans QGIS :
      • certaines ignorées
      • certaines privilégiées
    • des chemins de fichiers inaccessibles enregistrés dans le cache

Ressources

dépôt isogeo2office

@SimonSAMPERE SimonSAMPERE added enhancement Amélioration du fonctionnement existant features Nouvelles fonctionnalités task labels Sep 16, 2019
@SimonSAMPERE SimonSAMPERE added this to the Version 2 milestone Sep 16, 2019
@SimonSAMPERE SimonSAMPERE self-assigned this Sep 16, 2019
@SimonSAMPERE SimonSAMPERE modified the milestones: Version 2, version 3.1.0 Oct 23, 2019
@SimonSAMPERE SimonSAMPERE removed the PyQt label Oct 29, 2019
@SimonSAMPERE SimonSAMPERE modified the milestones: 3.1.0, Not planned Nov 12, 2020
@SimonSAMPERE SimonSAMPERE modified the milestones: 3.3.0 - 2021-T2, 3.3.1 Jul 28, 2021
@SimonSAMPERE SimonSAMPERE removed the task label Aug 2, 2022
@SimonSAMPERE SimonSAMPERE modified the milestones: Not planned, 3.4.1 Oct 21, 2022
@SimonSAMPERE SimonSAMPERE added the on premises relatif à la version on-premises label Aug 28, 2023
@SimonSAMPERE
Copy link
Collaborator Author

Point avec Catherine, Gaël et Stéphanie du CD94 concernant le déploiement massif du plugin QGIS via un zip

Au CD 94 ils prépare une version LTR de QGIS qui est configurée et customisée sur un poste "admin", à laquelle ils ajoutent des plugins dont le plugin Isogeo. Ensuite cette version est "chargée" dans un "centre logiciel" à partir duquel elle sera déployée sur les postes des utilisateurs sans nécessiter d'action de leur part. Les plugins sont donc encapsulés dans cette version déployée.

L'objectif c'est de faire en sorte qu'un maximum de configurations communes à tous les utilisateurs puisse être effectué une seule fois. Ce qu'on cherche c'est que les configurations du plugin Isogeo effectuées sur le poste "admin" avant le chargement dans le centre logiciel se répercutent sur les postes utilisateur après le déploiement.

Je pense notamment à l'authentification pour laquelle Stéphanie m'a dit que ça n'était pas le cas alors qu'elle dépose le fichier dans le dossier _auth du répertoire du plugin. Je lui ai dit qu'il faudrait essayer de le charger via le plugin mais il faut quand même que je vérifie que ça fonctionne.

Globalement, tout ça confirme la nécessité de se poser la question de où on enregistre les paramètres. J'ai toujours tendance à vouloir les enregistrer dans des fichiers + dans les paramètres de QGIS. Mais se pose la question des conflits, pour chaque paramètre il va falloir décider, si sa valeur dans le fichier est différente de celle des paramètres, quelle valeur conserver.

Le plugin sera prochaine déployé pour plusieurs dizaines d'utilisateurs.

Stéphanie m'a dit, après que je lui ais demandé, qu'on pourrait effectuer des tests de déploiement, une fois que j'aurai une version suffisamment mature du plugin à leur faire tester. Puisque je ne maîtrise pas les modalités technique de leur processus de déploiement, l'idée serait de constater dans leur environnement 2 types de comportement :

  • la répercutions sur les postes utilisateurs d'une configuration effectuée sur le poste admin
  • l'écrasement ou non des configurations effectuées sur un poste utilisateur suite à un nouveau déploiement

@SimonSAMPERE SimonSAMPERE changed the title Piste d'amélioration : création d'un module SettingsManager [SettingsManager] Création d'un module héritant de PyQt.QtCore.QSettings Feb 1, 2024
SimonSAMPERE added a commit that referenced this issue Apr 8, 2024
+ handle case when "add_metadata_url_portal" is not 0 or 1
SimonSAMPERE added a commit that referenced this issue Apr 10, 2024
the main module instantiate the SettingsManager and the instance is given has init arg to Authenticator, DataBaseManager, MetadataDisplayer, PortalURLManager, QuickSearchManager, CacheManager, ResultsManager and SearchFormManager
@SimonSAMPERE
Copy link
Collaborator Author

Convenu je sais plus quand : @Erzalt doit lire le ticket, lire la doc en ligne du plugin QGIS et organiser un point avec @SimonSAMPERE pour organiser la recette

@Erzalt
Copy link

Erzalt commented Apr 29, 2024

Ma version actuelle de QGIS est la 3.32.3. Est-ce qu'il y a un besoin d'une version particulière pour la recette, je vois que dans la doc le plugin va jusqu'à 3.28.x uniquement ?

@SimonSAMPERE
Copy link
Collaborator Author

@Erzalt effectivement j'aurais dû le préciser, il faudrait que tu installes la version 3.34.5 (la dernière version LTR)

@SimonSAMPERE
Copy link
Collaborator Author

point du 21/05 entre @Erzalt et @SimonSAMPERE

  • Consulter les QSettings de l'application QGIS : Menu "Préférences" > "Options" > onglet "Avancé" (tout en bas) > ne pas cocher la case "Use new settings..." et cliquer sur "Je ferai attention, je le promets !" > rubrique "isogeo"
  • Pour pouvoir télécharger la version expérimentale du plugin (correspond à la QA), cocher l'option correspondante dans l'onglet "Paramètres" du gestionnaire des extensions de QGIS
  • Accéder au répertoire d'installation du plugin en cliquant sur le bouton "LOG" de l'onglet "Paramètres" du plugin (rubrique "Ressources Avancées")

Les recherches rapides

  • initialement uniquement stockées dans le fichier _user\quicksearches.json
  • dans la version 3.5.0 : stockées dans le fichier _user\quicksearches.json et dans les QSettings dans isogeo/user/quicksearches
    --> comportement attendu : fusion du fichier et des QSettings + prévalence du fichier si conflit (pour une quicksearch dont le nom apparaît dans les QSettings et dans le fichier, on conserve les paramètres du fichier)

L'URL du portail

  • initialement, 2 paramètres add_metadata_url_portal et portal_base_url stockés dans les QSettings dans isogeo/settings
  • dans la version 3.5.0 : 2 paramètres add_metadata_url_portal et portal_base_url stockés dans les QSettings dans isogeo/settings et dans le fichier config.json
    --> comportement attendu : si la valeur est différente entre le fichier config.json et les QSettings, alors la valeur du fichier config.json écrase celle des QSettings

Les credentials (client_id et client_secret)

  • initialement, 2 paramètres app_id et app_secret stockés dans les QSettings dans isogeo/auth + le fichier client_secrets.json renseigné par l'utilisateur, déplacé dans le dossier _auth qui contient les clefs client_id et client_secret
  • dans la version 3.5.0 : le stockage de ces paramètres est inchangé
    --> comportement attendu : si un fichier client_secrets.json est présent dans le dossier _auth, alors on écrase les valeurs des paramètres app_id et app_secret des QSettings avec les valeurs des clefs client_id et client_secret du fichier client_secrets.json, sinon, si les paramètres app_id et app_secret des *QSettings sont remplis, on les conserve, sinon on demande à l'utilisateur d'indiquer l'emplacement d'un fichier client_secrets.json

Les URL Isogeo

  • initialement, 4 paramètres api_auth_url, api_base_url, app_base_url et help_base_url stockés dans le fichier config.json et dans les QSettings
  • dans la version 3.5.0 : le stockage de ces paramètres est inchangé
    --> comportement attendu :
  • api_auth_url : si la valeur est différente entre le fichier config.json et les QSettings et que la valeur présente dans le fichier config.json est différente de https://id.api.isogeo.com, alors la valeur du fichier config.json écrasent celle des QSettings, sinon la valeur des QSettings écrasent celle du fichier config.json.
  • api_base_url : si la valeur est différente entre le fichier config.json et les QSettings et que la valeur présente dans le fichier config.json est différente de https://v1.api.isogeo.com, alors la valeur du fichier config.json écrasent celle des QSettings, sinon la valeur des QSettings écrasent celle du fichier config.json.
  • app_base_url : si la valeur est différente entre le fichier config.json et les QSettings et que la valeur présente dans le fichier config.json est différente de https://app.isogeo.com, alors la valeur du fichier config.json écrasent celle des QSettings, sinon la valeur des QSettings écrasent celle du fichier config.json.
  • help_base_url : si la valeur est différente entre le fichier config.json et les QSettings et que la valeur présente dans le fichier config.json est différente de https://help.isogeo.com, alors la valeur du fichier config.json écrasent celle des QSettings, sinon la valeur des QSettings écrasent celle du fichier config.json.

@SimonSAMPERE
Copy link
Collaborator Author

SimonSAMPERE commented May 23, 2024

Version initiale Version initiale customisée Version installée Via un ZIP Via un ZIP customisé Via téléchargement
1 Aucune 0 3.5.0 1 0 0
2 Aucune 0 3.5.0 0 1 0
3 Aucune 0 3.5.0 0 0 1
4 3.4.0 0 3.5.0 1 0 0
5 3.4.0 0 3.5.0 0 1 0
6 3.4.0 0 3.5.0 0 0 1
7 3.4.0 1 3.5.0 1 0 0
8 3.4.0 1 3.5.0 0 1 0
9 3.4.0 1 3.5.0 0 0 1

@Erzalt
Copy link

Erzalt commented May 28, 2024

Gdoc sur les fichiers de configuration à créer pour chaque test : https://docs.google.com/spreadsheets/d/1ulO3ZB4ojbRXu1J-QfDzi0c_v2gzD-fZmytGbvyV7D4/edit#gid=405601901

@SimonSAMPERE
Copy link
Collaborator Author

SimonSAMPERE commented Jun 11, 2024

Ressources pour faire les 2 scripts Python de :

  • vérification de l'égalité entre les valeurs des QSettings et celles des fichiers
  • vérification de l'égalité entre les valeurs des QSettings et celles attendues

qsettings_keys_values.json

checker les scripts à exécuter dans QGIS, notamment :

# -*- coding: utf-8 -*-

from qgis.PyQt.QtCore import QSettings
import json
from pprint import pprint
from pathlib import Path

qsettings = QSettings()

matching = {
    r"C:\Users\SimonSAMPERE\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\isogeo-plugin-qgis\config.json": {
        "api_base_url": "isogeo/env/api_base_url",
        "api_auth_url": "isogeo/env/api_auth_url",
        "app_base_url": "isogeo/env/app_base_url",
        "help_base_url": "isogeo/env/help_base_url",
        "background_map_url": "isogeo/settings/background_map_url",
        "portal_base_url": "isogeo/settings/portal_base_url",
        "add_metadata_url_portal": "isogeo/settings/add_metadata_url_portal",
    },
    r"C:\Users\SimonSAMPERE\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\isogeo-plugin-qgis\_auth\client_secrets.json": {
        "client_id": "isogeo/auth/app_id",
        "client_secret": "isogeo/auth/app_secret",
    },
    r"C:\Users\SimonSAMPERE\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\isogeo-plugin-qgis\_user\quicksearches.json": "isogeo/user/quicksearches/"
}

for config_file_path in matching:
    if Path(config_file_path).stem == "quicksearches":
        keys = matching[config_file_path]
        with open(Path(config_file_path), "r") as json_file:
            config_json_content = json.load(json_file)
    elif Path(config_file_path).stem == "config":
        keys = matching[config_file_path]
        with open(Path(config_file_path), "r") as json_file:
            config_json_content = json.load(json_file)
        for key in keys:
            qsettings_key = keys[key]
            json_value = config_json_content.get(key)
            qsetting_value = qsettings.value(qsettings_key)
            if qsetting_value == json_value:
                print("☻ {} : '{}'".format(qsettings_key, json_value))
            else:
                print("Ø {} : '{}' vs '{}'".format(qsettings_key, json_value, qsetting_value))
    else:
        keys = matching[config_file_path]
        with open(Path(config_file_path), "r") as json_file:
            config_json_content = json.load(json_file)
        for key in keys:
            qsettings_key = keys[key]
            json_value = config_json_content.get("web").get(key)
            qsetting_value = qsettings.value(qsettings_key)
            if qsetting_value == json_value:
                print("☻ {} : '{}'".format(qsettings_key, json_value))
            else:
                print("Ø {} : '{}' vs '{}'".format(qsettings_key, json_value, qsetting_value))

@Erzalt
Copy link

Erzalt commented Jun 12, 2024

Reste encore les cas 8 et 9 qui viendront dans un autre commentaire

Recette

Se référer à ces tableaux.

Les informations sur les résultats des scripts se trouvent dans les dossiers associés.
Dans qsettings_keys_values se trouvent les valeurs attendues, dans result_conformity le résultat du script check_conformity.py (comparaison entre les qsettings et les qsettings_keys_values). Dans result_equal le résultat du script check_conformity.py (correspondance entre les qsettings et les fichiers).

Cas correspondants aux attendus

Les cas 1, 3, 4 et 6 sont ok ✔️

Cas ne correspondants pas aux attendus

Cas 2 et 5

Pour les cas 2 et 5, je remarque que les urls des quicksearches ne sont pas récupérés tel quels. Ils sont regénérés en fonction de l'url entré dans api_base_url.
Dans config.json :

"api_base_url": "https://v1.api2.isogeo.com"

Url fournis dans les quicksearches : "url": "https://v1.api.isogeo.com/resources/search?q=type:dataset&ob=relevance&od=desc&_include=serviceLayers,layers,limitations&_limit=10&_offset=0&_lang=fr"

Url dans les quicksearches après installation : "url": "https://v1.api2.isogeo.com/resources/search?q=type:dataset&ob=relevance&od=desc&_include=serviceLayers,layers,limitations&_limit=10&_offset=0&_lang=fr"

(c'est un comportement qui me semble logique, mais il n'est pas spécifié donc je le remonte)

Cas 7 📼

Pour le cas 7, les quicksearches ne sont pas récupérées.
Protocole suivi :

  • Suppression du dossier du plugin ;
  • Suppression des qsettings ;
  • Téléchargement de la version 3.4.0 ;
  • Ajout des fichiers quickseraches.json, client_secret.json et config.json au endroits prévus, et zip du dossier ;
  • Téléchargement par zip du plugin personnalisé créé ;
  • Vérification de la présence des informations :
    version 3 4 0
  • Téléchargement de la version 3.5.0 ;
  • Téléchargement par zip du plugin 3.5.0 ;
  • Lancements des scripts, récupération des résultats, qsettings ==fichiers, qsettings ==attentes
  • Les quicksearches ne sont pas fusionnées, la rechercher "education" n'est pas récupérée :
    version 3 5 0

@SimonSAMPERE
Copy link
Collaborator Author

SimonSAMPERE commented Jun 12, 2024

@Erzalt , merci pour ce magnifique et réjouissant premier retour de recette ✨

Comme tu l'avais pressenti pour les cas 2 et 5, le comportement est conforme à ce qui est attendu mais j'avais effectivement oublié de t'indiquer cette subtilité. Pour que les recherches rapides restent fonctionnel, le plugin remplace la base de l'URL de l'API s'il a changé.

Venons-en maintenant au 📼. Figure-toi que la encore le comportement est attendu mais que je l'avais mal décrit dans ce commentaire. Puisque les recherches rapides sont initialement (3.4.0) uniquement stockées dans le fichier quicksearches.json, elles sont irrémédiablement perdues lorsqu'on installe la version 3.5.0 du plugin. Lors de la mise à jour, tout le répertoire est écrasé donc le fichier quicksearches.json est supprimé et la version 3.5.0 n'a aucun moyen de récupérer les recherches rapides qui ne figuraient même pas dans les QSettings. C'est justement pour ça qu'elles y figurent depuis la version 3.5.0, pour avoir une persistance avec les futurs versions. Ce comportement sera donc valable également pour les cas 8 🦪 et 9 🥚. Voilà, j'espère que c'est à peu près claire.

Du coup tu peux poursuivre la recette puisque tous les comportements sont conformes (c'est juste moi qui les avais mal décrit, sorry).

@Erzalt
Copy link

Erzalt commented Jun 13, 2024

Résumé état actuel de la recette :

  • 1 ✔️
  • 2 ✔️
  • 3 ✔️
  • 4 ✔️
  • 5 ✔️
  • 6 ✔️
  • 7 ✔️
  • 7.2 ✔️
  • 8 ✔️
  • 8.2 ✔️
  • 8.3 ✔️
  • 8.4 ✔️
  • 9 ✔️
  • 9.2 ✔️
  • 10 ✔️
  • 10.2 ✔️
  • 11 ✔️
  • 11.2 ✔️
  • 11.3 ✔️
  • 11.4 ✔️
  • 12 ✔️
  • 12.2 ✔️

@Erzalt
Copy link

Erzalt commented Jun 14, 2024

Bravo ! Pas de bugs à déclarer ! 🎉

@SimonSAMPERE
Copy link
Collaborator Author

Merci beaucoup @Erzalt et bravo pour cette recette menée d'une main de maître 🦾

@SimonSAMPERE
Copy link
Collaborator Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Amélioration du fonctionnement existant features Nouvelles fonctionnalités on premises relatif à la version on-premises
Projects
None yet
Development

No branches or pull requests

2 participants