Fermer Base + libreoffice avec python

Bonsoir,
Je recherche, sans succès pour l’ instant, à fermer LibreOffice après avoir fermer une base de donnée.
Pour la fermeture de la base, j’ utilise le script ci-dessous. Il me manque que la commande pour fermer LO.

#! /usr/bin/env python3

#FERMETURE D' UN FORMULAIRE ET DE LA BASE
 
from scriptforge import CreateScriptService
 
ui = CreateScriptService('UI')
db = ui.GetDocument(r'/mnt/El_Casot/Yvon/Informatique/LibreOffice/Base_Test.odb')
maBase = db.GetDatabase()
frml = 'Mn_Gn'
db.CloseFormDocument(frml)
maBase.CloseDatabase()
db.CloseDocument()

Si vous avez une idée, je suis preneur.
Bonne soirée à tous

from pathlib import Path

desktop = XSCRIPTCONTEXT.getDesktop()
db_path = Path("/mnt/El_Casot/Yvon/Informatique/LibreOffice/Base_Test.odb")

db_doc = desktop.loadComponentFromURL(f"{db_path.as_uri()}","_blank", 0,(),)

#do something

db_doc.store()
db_doc.close(True)

comme vous le remarquerez, »scriptforge« est comme toujours hors de propos

Pour revenir au premier jet … le code suivant aurait été suffisant:

from scriptforge import CreateScriptService
 
def CloseAll():
   ui = CreateScriptService('UI')
   db = ui.GetDocument(r'/mnt/El_Casot/Yvon/Informatique/LibreOffice/Base_Test.odb')
   db.CloseDocument()
   
g_exportedScripts = (CloseAll,)

Le détour par maBase était superflu puisque pas utilisé.

En outre, AUCUN des codes proposés jusqu’ici ne ferme LO. La base est en effet fermée mais le processus LO est toujours actif en arrière-plan.

Je suggère alors d’insérer la ligne:

    ui.Activate('WELCOMESCREEN')

en fin de fonction.
La fermeture de LO reste cependant manuelle.

Bonjour,

Excellent, votre script répond exactement à ce que je voulais faire. Je joint le module définitif fonctionnant depuis un bouton d’ un formulaire du module Base de LO.

#! /usr/bin/env python3

from pathlib import Path

def fermerLO(event = True):
    desktop = XSCRIPTCONTEXT.getDesktop()
    db_path = Path("/mnt/El_Casot/Yvon/Informatique/LibreOffice/Base_Test.odb")
    db_doc = desktop.loadComponentFromURL(f"{db_path.as_uri()}","_blank", 0,(),)
    db_doc.store()
    db_doc.close(True)

g_exportedScripts = (fermerLO,)

Je vais maintenant m’ atteler à développer un programme de sauvegarde d’ une base.
Pour l’ heure et en Basic, je sauvegarde une copie numérotée de la base.
Afin d’ éviter une surcharge inutile de ce dossier, je ne conserve que les cinq dernières. A chaque sauvegarde, j’ ai donc un nouveau fichier qui se créé et le plus ancien est effacé.
Merci beaucoup de votre aide.
Juste un détail et si vous avez le temps, pourriez-vous m’ expliquer la ligne de code ci dessous:

db_doc = desktop.loadComponentFromURL(f"{db_path.as_uri()}","_blank", 0,(),)

Cordialement

Start here

…continue there…

…and there …

Je t’ai déjà suggéré d’étudier la documentation générale de python ?