Browse Source

Save all settings at once.

Removed log dir
pull/1/merge
Ruud 14 years ago
parent
commit
09135e1738
  1. 2
      CouchPotato.py
  2. 31
      couchpotato/cli.py
  3. 1
      couchpotato/core/logger.py
  4. 2
      couchpotato/settings/__init__.py
  5. 26
      couchpotato/settings/loader.py
  6. 1
      logs/__init__.py

2
CouchPotato.py

@ -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

31
couchpotato/cli.py

@ -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
couchpotato/core/logger.py

@ -1,4 +1,3 @@
from couchpotato import app
import logging import logging
class CPLog(): class CPLog():

2
couchpotato/settings/__init__.py

@ -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:

26
couchpotato/settings/loader.py

@ -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
logs/__init__.py

@ -1 +0,0 @@
Loading…
Cancel
Save