from ihm import GladeWindowManager
from ihm import MainWindow
-from manager import test_action_on_start_button
+from manager import OEManager
+# Rajout de notre IHM dans le gestionnaire de fichiers Glade
GladeWindowManager.append("OpenERPEasyStarter.glade")
+# Création de notre IHM
appli = MainWindow()
+# Création d'un gestionnaire OpenERP de test
+manager = OEManager(
+ "/home/openerp/server/7.0/openerp-server"
+ ','.join([
+ "/home/openerp/addons/7.0/"
+ "/home/openerp/web/7.0/addons/"
+ "/media/sf_partage/code/src/"
+ ])
+)
+
+# Connection entre le gestionnaire OpenERP et l'IHM
+appli.set_action_on_start_button(manager.action)
+
if __name__ == "__main__":
# Test de l'application.
- appli.set_action_on_start_button(test_action_on_start_button)
appli.start()
#!/usr/bin/python3
#-*- coding: utf-8 -*-
+import subprocess
-def test_action_on_start_button(action, modules, bases, scripts):
- print("""Éléments récupérés :
-modules :
-%s
-bases
-%s
-scripts
-%s
-action
-%s""" % (modules, bases, scripts, action))
+class OEManager:
+ def __init__(self, path_server, path_addons):
+ self.path_server = path_server
+ self.path_addons = path_addons
+
+ def action(self, action, modules, bases, scripts):
+ option, base = '', bases[0]
+
+ if action == 'Réinstaller':
+ # Supprimer et recréer la base
+ self.new_database(base)
+ # Passer les scripts
+ self.call_scripts(scripts)
+ # Gérer l'option de réinstallation
+ option = '-i'
+ elif action == 'Mettre à jour':
+ # Gérer l'option de mise à jour
+ option = '-u'
+
+ # Paramétrer correctement l'option -i ou -u
+ if option:
+ option += ' ' + ','.join(modules) + ' '
+
+ self.start_openerp(option, base)
+
+ def new_database(self, base):
+ subprocess.getstatusoutput("dropdb %s" % base)
+ subprocess.getstatusoutput("createdb %s" % base)
+
+ def call_scripts(self, scripts):
+ for script in scripts:
+ subprocess.getstatusoutput(script)
+
+ def start_openerp(self, option, base):
+ commande = '%s --addons-path=%s %s-d %s' % (
+ self.path_server,
+ self.path_addons,
+ option,
+ base
+ )
+ subprocess.getstatusoutput(commande)