Save all settings at once.

Removed log dir
This commit is contained in:
Ruud committed 2011-02-12 23:25:42 +01:00
1 parent e1d6701722
commit 09135e1738
6 files changed
+44 -19

No files matched your search

+1 -1
View File
@@ -14,7 +14,7 @@ base_path = dirname(os.path.abspath(__file__))
sys.path.insert(0, os.path.join(base_path, 'libs')) sys.path.insert(0, os.path.join(base_path, 'libs'))
from couchpotato.core.logger import CPLog from couchpotato.core.logger import CPLog
log = CPLog(__name__); log = CPLog(__name__)
try: try:
from couchpotato import cli from couchpotato import cli
+24 -7
View File
@@ -1,4 +1,5 @@
from couchpotato import app from couchpotato import app
from couchpotato.core.logger import CPLog
from couchpotato.settings import Settings from couchpotato.settings import Settings
from logging import handlers from logging import handlers
from optparse import OptionParser from optparse import OptionParser
@@ -12,16 +13,26 @@ def cmd_couchpotato(base_path):
# Options # Options
parser = OptionParser('usage: %prog [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('-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('-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') parser.add_option('-d', '--daemon', action = 'store_true', dest = 'daemonize', help = 'Daemonize the app')
(options, args) = parser.parse_args(sys.argv[1:]) (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 # 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) debug = options.debug or settings.get('debug', default = False)
@@ -38,19 +49,25 @@ def cmd_couchpotato(base_path):
logger.addHandler(hdlr) logger.addHandler(hdlr)
# To file # 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) hdlr2.setFormatter(formatter)
logger.addHandler(hdlr2) 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 from couchpotato.settings.loader import SettingsLoader
sl = SettingsLoader(root = base_path) sl = SettingsLoader(root = base_path)
sl.loadConfig('couchpotato', 'core') sl.addConfig('couchpotato', 'core')
sl.run()
# Create app # Create app
app
app.host = settings.get('host', default = '0.0.0.0') app.host = settings.get('host', default = '0.0.0.0')
app.port = settings.get('port', default = 5000) app.port = settings.get('port', default = 5000)
app.run(debug = debug) app.debug = debug
app.run()
-1
View File
@@ -1,4 +1,3 @@
from couchpotato import app
import logging import logging
class CPLog(): class CPLog():
+1 -1
View File
@@ -36,7 +36,7 @@ class Settings():
for option, value in options.iteritems(): for option, value in options.iteritems():
self.setDefault(section_name, option, value) 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) self.on_register.send(self)
if save: if save:
+18 -8
View File
@@ -7,6 +7,8 @@ log = CPLog(__name__)
class SettingsLoader: class SettingsLoader:
configs = {}
def __init__(self, root = ''): def __init__(self, root = ''):
self.settings_register = signal('settings.register') self.settings_register = signal('settings.register')
@@ -18,22 +20,26 @@ class SettingsLoader:
} }
for type, tuple in self.paths.iteritems(): 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 did_save = 0
for file in glob.glob(os.path.join(dir, '*')):
plugin_name = os.path.basename(file) for module, plugin_name in self.configs.iteritems():
plugin_dir = os.path.join(dir, plugin_name) did_save += self.loadConfig(module, plugin_name, save = False)
if os.path.isdir(plugin_dir):
did_save += self.loadConfig(module, plugin_name, save = False)
if did_save: if did_save:
self.settings_save.send() 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): def loadConfig(self, module, name, save = True):
module_name = '%s.%s' % (module, name) module_name = '%s.%s' % (module, name)
print module_name
try: try:
m = getattr(self.loadModule(module_name), name) m = getattr(self.loadModule(module_name), name)
(section, options) = m.config (section, options) = m.config
@@ -42,6 +48,10 @@ class SettingsLoader:
return True return True
except Exception, e: except Exception, e:
log.error("Failed loading config for %s: %s" % (name, 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): def loadModule(self, name):
try: try:
-1
View File
@@ -1 +0,0 @@