From 09135e173873864980e439beea4293666c059eb7 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 12 Feb 2011 23:25:42 +0100 Subject: [PATCH] Save all settings at once. Removed log dir --- CouchPotato.py | 2 +- couchpotato/cli.py | 31 ++++++++++++++++++++++++------- couchpotato/core/logger.py | 1 - couchpotato/settings/__init__.py | 2 +- couchpotato/settings/loader.py | 26 ++++++++++++++++++-------- logs/__init__.py | 1 - 6 files changed, 44 insertions(+), 19 deletions(-) delete mode 100644 logs/__init__.py diff --git a/CouchPotato.py b/CouchPotato.py index 3788a565..87ed21fb 100755 --- a/CouchPotato.py +++ b/CouchPotato.py @@ -14,7 +14,7 @@ base_path = dirname(os.path.abspath(__file__)) sys.path.insert(0, os.path.join(base_path, 'libs')) from couchpotato.core.logger import CPLog -log = CPLog(__name__); +log = CPLog(__name__) try: from couchpotato import cli diff --git a/couchpotato/cli.py b/couchpotato/cli.py index 5f38ec20..e3b86455 100644 --- a/couchpotato/cli.py +++ b/couchpotato/cli.py @@ -1,4 +1,5 @@ from couchpotato import app +from couchpotato.core.logger import CPLog from couchpotato.settings import Settings from logging import handlers from optparse import OptionParser @@ -12,16 +13,26 @@ def cmd_couchpotato(base_path): # Options parser = OptionParser('usage: %prog [options]') - parser.add_option('-l', '--logdir', dest = 'logdir', default = 'logs', help = 'log DIRECTORY (default ./logs)') + parser.add_option('-s', '--datadir', dest = 'data_dir', default = base_path, help = 'Absolute or ~/ path, where settings/logs/database data is saved (default ./)') parser.add_option('-t', '--test', '--debug', action = 'store_true', dest = 'debug', help = 'Debug mode') parser.add_option('-q', '--quiet', action = 'store_true', dest = 'quiet', help = "Don't log to console") parser.add_option('-d', '--daemon', action = 'store_true', dest = 'daemonize', help = 'Daemonize the app') (options, args) = parser.parse_args(sys.argv[1:]) + # Create data dir if needed + if not os.path.isdir(options.data_dir): + options.data_dir = os.path.expanduser(options.data_dir) + os.makedirs(options.data_dir) + + # Create logging dir + log_dir = os.path.join(options.data_dir, 'logs'); + if not os.path.isdir(log_dir): + os.mkdir(log_dir) + # Register settings - settings = Settings(os.path.join(base_path, 'settings.conf')) + settings = Settings(os.path.join(options.data_dir, 'settings.conf')) debug = options.debug or settings.get('debug', default = False) @@ -38,19 +49,25 @@ def cmd_couchpotato(base_path): logger.addHandler(hdlr) # To file - hdlr2 = handlers.RotatingFileHandler(os.path.join(options.logdir, 'CouchPotato.log'), 'a', 5000000, 4) + hdlr2 = handlers.RotatingFileHandler(os.path.join(log_dir, 'CouchPotato.log'), 'a', 5000000, 4) hdlr2.setFormatter(formatter) logger.addHandler(hdlr2) - # Load config + # Start logging + log = CPLog(__name__) + log.debug('Started with params %s' % args) + + + # Load configs from couchpotato.settings.loader import SettingsLoader sl = SettingsLoader(root = base_path) - sl.loadConfig('couchpotato', 'core') + sl.addConfig('couchpotato', 'core') + sl.run() # Create app - app app.host = settings.get('host', default = '0.0.0.0') app.port = settings.get('port', default = 5000) - app.run(debug = debug) + app.debug = debug + app.run() diff --git a/couchpotato/core/logger.py b/couchpotato/core/logger.py index 509fd97b..ae45dda8 100644 --- a/couchpotato/core/logger.py +++ b/couchpotato/core/logger.py @@ -1,4 +1,3 @@ -from couchpotato import app import logging class CPLog(): diff --git a/couchpotato/settings/__init__.py b/couchpotato/settings/__init__.py index 41ce5fef..7a52e999 100644 --- a/couchpotato/settings/__init__.py +++ b/couchpotato/settings/__init__.py @@ -36,7 +36,7 @@ class Settings(): for option, value in options.iteritems(): self.setDefault(section_name, option, value) - log.debug('Registered defaults %s: %s' % (section_name, options)) + log.debug('Defaults for "%s": %s' % (section_name, options)) self.on_register.send(self) if save: diff --git a/couchpotato/settings/loader.py b/couchpotato/settings/loader.py index d318bdd2..91a056e1 100644 --- a/couchpotato/settings/loader.py +++ b/couchpotato/settings/loader.py @@ -7,6 +7,8 @@ log = CPLog(__name__) class SettingsLoader: + configs = {} + def __init__(self, root = ''): self.settings_register = signal('settings.register') @@ -18,22 +20,26 @@ class SettingsLoader: } for type, tuple in self.paths.iteritems(): - self.loadFromDir(tuple[0], tuple[1]) + self.addFromDir(tuple[0], tuple[1]) - def loadFromDir(self, module, dir): + def run(self): did_save = 0 - for file in glob.glob(os.path.join(dir, '*')): - plugin_name = os.path.basename(file) - plugin_dir = os.path.join(dir, plugin_name) - if os.path.isdir(plugin_dir): - did_save += self.loadConfig(module, plugin_name, save = False) + + for module, plugin_name in self.configs.iteritems(): + did_save += self.loadConfig(module, plugin_name, save = False) if did_save: self.settings_save.send() + def addFromDir(self, module, dir): + + for file in glob.glob(os.path.join(dir, '*')): + name = os.path.basename(file) + if os.path.isdir(os.path.join(dir, name)): + self.addConfig(module, name) + def loadConfig(self, module, name, save = True): module_name = '%s.%s' % (module, name) - print module_name try: m = getattr(self.loadModule(module_name), name) (section, options) = m.config @@ -42,6 +48,10 @@ class SettingsLoader: return True except Exception, e: log.error("Failed loading config for %s: %s" % (name, e)) + return False + + def addConfig(self, module, name): + self.configs[module] = name def loadModule(self, name): try: diff --git a/logs/__init__.py b/logs/__init__.py deleted file mode 100644 index 8b137891..00000000 --- a/logs/__init__.py +++ /dev/null @@ -1 +0,0 @@ -