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'))
from couchpotato.core.logger import CPLog
log = CPLog(__name__);
log = CPLog(__name__)
try:
from couchpotato import cli

31
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()

1
couchpotato/core/logger.py

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

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

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

1
logs/__init__.py

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