53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
|
# script para refrescar cambios de xml del modulo de tryton
|
||
|
import sys
|
||
|
import os
|
||
|
import logging
|
||
|
import time
|
||
|
|
||
|
import inotify.adapters
|
||
|
|
||
|
logging.basicConfig(level=logging.INFO, stream=sys.stderr)
|
||
|
|
||
|
SRC = os.environ['SRC'] + '/modules/'
|
||
|
MODULES = os.environ['MODULES'].split(':')
|
||
|
DB_NAME = os.environ['DB_NAME']
|
||
|
|
||
|
|
||
|
def _main():
|
||
|
i = inotify.adapters.Inotify()
|
||
|
logging.info("MONITOREANDO ARCHIVOS EN %s", SRC)
|
||
|
|
||
|
for module in MODULES:
|
||
|
logging.info('NOMBRE DEL MODULO A MONITOREAR%s', module)
|
||
|
i.add_watch(
|
||
|
SRC + module)
|
||
|
|
||
|
for event in i.event_gen(yield_nones=False):
|
||
|
(_, type_names, path, filename) = event
|
||
|
(_, ext) = os.path.splitext(filename)
|
||
|
|
||
|
if 'IN_CLOSE_WRITE' not in type_names:
|
||
|
continue
|
||
|
|
||
|
module_name = path.split('/')[-1]
|
||
|
logging.info('NOMBRE DEL MODULO %s', module_name)
|
||
|
|
||
|
if ext in ['.py', '.xml', '.cfg']:
|
||
|
for _ in range(0, 10):
|
||
|
command = "trytond-admin -d {} -u {} --act -vv".format(
|
||
|
DB_NAME, module_name)
|
||
|
logging.debug("Ejecutando comando: %s", command)
|
||
|
update_module = os.system(command)
|
||
|
if update_module != 0:
|
||
|
time.sleep(2)
|
||
|
logging.error("fallo trytond-admin")
|
||
|
else:
|
||
|
logging.info(
|
||
|
"ACTUALIZADO TRYTOND POR CAMBIO DE ARCHIVO %s",
|
||
|
filename)
|
||
|
break
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
_main()
|