Browse Source

Encode used path on startup. fix #1797 fix #1297

pull/1844/head
Ruud 12 years ago
parent
commit
b2930dd6a7
  1. 34
      couchpotato/runner.py

34
couchpotato/runner.py

@ -3,6 +3,7 @@ from cache import FileSystemCache
from couchpotato import KeyHandler from couchpotato import KeyHandler
from couchpotato.api import NonBlockHandler, ApiHandler from couchpotato.api import NonBlockHandler, ApiHandler
from couchpotato.core.event import fireEventAsync, fireEvent from couchpotato.core.event import fireEventAsync, fireEvent
from couchpotato.core.helpers.encoding import toUnicode
from couchpotato.core.helpers.variable import getDataDir, tryInt from couchpotato.core.helpers.variable import getDataDir, tryInt
from logging import handlers from logging import handlers
from tornado.httpserver import HTTPServer from tornado.httpserver import HTTPServer
@ -74,23 +75,25 @@ def runCouchPotato(options, base_path, args, data_dir = None, log_dir = None, En
if not encoding or encoding in ('ANSI_X3.4-1968', 'US-ASCII', 'ASCII'): if not encoding or encoding in ('ANSI_X3.4-1968', 'US-ASCII', 'ASCII'):
encoding = 'UTF-8' encoding = 'UTF-8'
Env.set('encoding', encoding)
# Do db stuff # Do db stuff
db_path = os.path.join(data_dir, 'couchpotato.db') db_path = toUnicode(os.path.join(data_dir, 'couchpotato.db'))
# Backup before start and cleanup old databases # Backup before start and cleanup old databases
new_backup = os.path.join(data_dir, 'db_backup', str(int(time.time()))) new_backup = toUnicode(os.path.join(data_dir, 'db_backup', str(int(time.time()))))
# Create path and copy # Create path and copy
if not os.path.isdir(new_backup): os.makedirs(new_backup) if not os.path.isdir(new_backup): os.makedirs(new_backup)
src_files = [options.config_file, db_path, db_path + '-shm', db_path + '-wal'] src_files = [options.config_file, db_path, db_path + '-shm', db_path + '-wal']
for src_file in src_files: for src_file in src_files:
if os.path.isfile(src_file): if os.path.isfile(src_file):
shutil.copy2(src_file, os.path.join(new_backup, os.path.basename(src_file))) shutil.copy2(src_file, toUnicode(os.path.join(new_backup, os.path.basename(src_file))))
# Remove older backups, keep backups 3 days or at least 3 # Remove older backups, keep backups 3 days or at least 3
backups = [] backups = []
for directory in os.listdir(os.path.dirname(new_backup)): for directory in os.listdir(os.path.dirname(new_backup)):
backup = os.path.join(os.path.dirname(new_backup), directory) backup = toUnicode(os.path.join(os.path.dirname(new_backup), directory))
if os.path.isdir(backup): if os.path.isdir(backup):
backups.append(backup) backups.append(backup)
@ -99,7 +102,7 @@ def runCouchPotato(options, base_path, args, data_dir = None, log_dir = None, En
if total_backups > 3: if total_backups > 3:
if tryInt(os.path.basename(backup)) < time.time() - 259200: if tryInt(os.path.basename(backup)) < time.time() - 259200:
for src_file in src_files: for src_file in src_files:
b_file = os.path.join(backup, os.path.basename(src_file)) b_file = toUnicode(os.path.join(backup, os.path.basename(src_file)))
if os.path.isfile(b_file): if os.path.isfile(b_file):
os.remove(b_file) os.remove(b_file)
os.rmdir(backup) os.rmdir(backup)
@ -107,13 +110,12 @@ def runCouchPotato(options, base_path, args, data_dir = None, log_dir = None, En
# Register environment settings # Register environment settings
Env.set('encoding', encoding) Env.set('app_dir', toUnicode(base_path))
Env.set('app_dir', base_path) Env.set('data_dir', toUnicode(data_dir))
Env.set('data_dir', data_dir) Env.set('log_path', toUnicode(os.path.join(log_dir, 'CouchPotato.log')))
Env.set('log_path', os.path.join(log_dir, 'CouchPotato.log')) Env.set('db_path', toUnicode('sqlite:///' + db_path))
Env.set('db_path', 'sqlite:///' + db_path) Env.set('cache_dir', toUnicode(os.path.join(data_dir, 'cache')))
Env.set('cache_dir', os.path.join(data_dir, 'cache')) Env.set('cache', FileSystemCache(toUnicode(os.path.join(Env.get('cache_dir'), 'python'))))
Env.set('cache', FileSystemCache(os.path.join(Env.get('cache_dir'), 'python')))
Env.set('console_log', options.console_log) Env.set('console_log', options.console_log)
Env.set('quiet', options.quiet) Env.set('quiet', options.quiet)
Env.set('desktop', desktop) Env.set('desktop', desktop)
@ -169,13 +171,13 @@ def runCouchPotato(options, base_path, args, data_dir = None, log_dir = None, En
# Check if database exists # Check if database exists
db = Env.get('db_path') db = Env.get('db_path')
db_exists = os.path.isfile(db_path) db_exists = os.path.isfile(toUnicode(db_path))
# Load migrations # Load migrations
if db_exists: if db_exists:
from migrate.versioning.api import version_control, db_version, version, upgrade from migrate.versioning.api import version_control, db_version, version, upgrade
repo = os.path.join(base_path, 'couchpotato', 'core', 'migration') repo = toUnicode(os.path.join(base_path, 'couchpotato', 'core', 'migration'))
latest_db_version = version(repo) latest_db_version = version(repo)
try: try:
@ -244,14 +246,14 @@ def runCouchPotato(options, base_path, args, data_dir = None, log_dir = None, En
static_path = '%sstatic/' % api_base static_path = '%sstatic/' % api_base
for dir_name in ['fonts', 'images', 'scripts', 'style']: for dir_name in ['fonts', 'images', 'scripts', 'style']:
application.add_handlers(".*$", [ application.add_handlers(".*$", [
('%s%s/(.*)' % (static_path, dir_name), StaticFileHandler, {'path': os.path.join(base_path, 'couchpotato', 'static', dir_name)}) ('%s%s/(.*)' % (static_path, dir_name), StaticFileHandler, {'path': toUnicode(os.path.join(base_path, 'couchpotato', 'static', dir_name))})
]) ])
Env.set('static_path', static_path); Env.set('static_path', static_path);
# Load configs & plugins # Load configs & plugins
loader = Env.get('loader') loader = Env.get('loader')
loader.preload(root = base_path) loader.preload(root = toUnicode(base_path))
loader.run() loader.run()

Loading…
Cancel
Save