Closed alhyss closed 1 year ago
Je pense que c'est de ton côté qu'il faut gérer ça, @WREATCHED .
Ce ne sera a priori pas une très grosse modification, mais pas tout à fait trivial non plus.
Tu pourrais faire en sorte que la fonction plume.bibli_plume.returnObjetTpl_label
utilise les modèles locaux lorsqu'elle n'en trouve pas sur le serveur en remplaçant :
if option == "LOCAL" :
mKeySql = queries.query_evaluate_local_templates(self.templates_collection, self.schema, self.table)
else :
mKeySql = queries.query_list_templates(self.schema, self.table)
par quelque chose de ce genre :
mKeySql = None
if not option == "LOCAL" :
mKeySql = queries.query_list_templates(self.schema, self.table)
if not mKeySql :
mKeySql = queries.query_evaluate_local_templates(self.templates_collection, self.schema, self.table)
Mais il faudra aussi :
self.templates_collection
avant de lancer queries.query_evaluate_local_templates()
, car l'attribut n'est (je crois) initialisé avec le constructeur de plume.pg.template.LocalTemplatesCollection
que lorsque PlumePg n'est pas active sur la base.
C'est ici :
https://github.com/MTES-MCT/metadata-postgresql/blob/f9e153e91fc75adb7b6b53c36eba64e0ecec61b4/plume/plume_ui.py#L1011Je ne creuse pas plus, tu sauras mieux que moi comment intelligemment réorganiser ça !
Référence doc technique : Modèles de formulaire > Avec les modèles stockés en local
Réponse
instancier une nouvelle variable complémentaire à instalMetadata
appelée ifNotEmptyTemplates
_schema, _table = "z_plume", "meta_template"
mKeySql = queries.query_list_templates(_schema, _table)
self.templatesEmptyOrPlain, zMessError_Code, zMessError_Erreur, zMessError_Diag = executeSql(self, self.mConnectEnCours,
mKeySql, optionRetour = "fetchall")
self.ifNotEmptyTemplates = True if len(self.templatesEmptyOrPlain) > 0 else False
Partout où la condition était if self.instalMetadata
devient if self.instalMetadata and self.ifNotEmptyTemplates
sauf
pour celle de donner les droits d'accès à la création des modèles
Le chargement des modèles locaux dans ce cas (extension installée, modèles vides) est implémenté par la ligne suivante
if not self.ifNotEmptyTemplates : self.templates_collection = LocalTemplatesCollection()
Actuellement, lorsque l'extension PostgreSQL PlumePg n'est pas installée sur la base contenant la table cible, l'utilisateur a tout de même accès aux modèles pré-configurés grâce à des copies locales. Par contre, lorsque PlumePg est installée mais qu'aucun modèle n'a été chargé/créé (
z_plume.meta_template
est vide), l'utilisateur n'a plus que Aucun (pas de modèle), dans sa liste de modèles disponibles.Le formulaire sans modèle étant particulièrement lourd, notamment en mode édition, il paraît préférable de s'assurer que les utilisateurs ne se retrouvent jamais dans cette situation, et de donner accès aux modèles locaux lorsque PlumePg ne fournit pas de modèle.