Put frontend config files in profile_foo/nbconfig/ subdir

This commit is contained in:
Thomas Kluyver 2014-11-12 15:53:35 -08:00
parent ae6ae8f7b0
commit 0f44eced72

View File

@ -5,6 +5,7 @@
import json
import os
import io
import errno
from tornado import web
from IPython.utils.py3compat import PY3
@ -33,8 +34,19 @@ def recursive_update(target, new):
class ConfigHandler(IPythonHandler):
SUPPORTED_METHODS = ('GET', 'PUT', 'PATCH')
@property
def config_dir(self):
return os.path.join(self.profile_dir, 'nbconfig')
def ensure_config_dir_exists(self):
try:
os.mkdir(self.config_dir, 0o755)
except OSError as e:
if e.errno != errno.EEXIST:
raise
def file_name(self, section_name):
return os.path.join(self.profile_dir, 'nb_%s_config.json' % section_name)
return os.path.join(self.config_dir, section_name+'.json')
@web.authenticated
@json_errors
@ -52,6 +64,7 @@ class ConfigHandler(IPythonHandler):
def put(self, section_name):
self.get_json_body() # Will raise 400 if content is not valid JSON
filename = self.file_name(section_name)
self.ensure_config_dir_exists()
with open(filename, 'wb') as f:
f.write(self.request.body)
self.set_status(204)
@ -69,6 +82,7 @@ class ConfigHandler(IPythonHandler):
update = self.get_json_body()
recursive_update(section, update)
self.ensure_config_dir_exists()
if PY3:
f = io.open(filename, 'w', encoding='utf-8')
else: