]> git.llucax.com Git - software/sercom-old.git/blob - src/sercom/util.py
Un recurso más para tratar de evitar el race.
[software/sercom-old.git] / src / sercom / util.py
1 # -*- encoding: iso-8859-1 -*-
2 # vim: set et sw=4 sts=4 :
3
4 # Módulos estándar
5 import os
6 import sys
7 import locale
8 import logging
9 import logging.config
10 import ConfigParser
11 # Módulos externos
12 import sqlobject
13
14 def get_logger(tipo):
15     log = None
16     for log_conf in ('log.ini', os.path.expanduser('~/.sercom/log.ini'), '/etc/sercom/log.ini'):
17         if (os.access(log_conf, os.R_OK)):
18             logging.config.fileConfig(log_conf)
19             log = logging.getLogger(tipo)
20     return log
21
22 def init(tipo):
23     # Seteo locale
24     locale.setlocale(locale.LC_ALL, '')
25     # Obtengo configuración
26     conf = ConfigParser.SafeConfigParser()
27     if not conf.read(('/etc/sercom/sercom.ini', os.path.expanduser('~/.sercom/sercom.ini'), 'sercom.ini')):
28         sys.stderr.write('No se pudo obtener configuración!\n')
29         sys.exit(1)
30     # Seteo umask para que el grupo pueda leer
31     os.umask(00027)
32     # Conexión a la DB
33     conn = sqlobject.connectionForURI(conf.get('dbo', 'database'))
34     # Cargo config del logger
35     log = get_logger(tipo)
36     if not log:
37         print >>sys.stderr, 'No se pudo cargar archivo de configuración de log.'
38         sys.exit(1)
39     # Devuelvo cosas interesantes
40     return (conf, conn, log)
41