handlers.py
44 lines
| 1.2 KiB
| text/x-python
|
PythonLexer
Thomas Kluyver
|
r18704 | """Tornado handlers for frontend config storage.""" | ||
Thomas Kluyver
|
r18703 | |||
# Copyright (c) IPython Development Team. | ||||
# Distributed under the terms of the Modified BSD License. | ||||
import json | ||||
import os | ||||
import io | ||||
Thomas Kluyver
|
r18812 | import errno | ||
Thomas Kluyver
|
r18703 | from tornado import web | ||
Thomas Kluyver
|
r18706 | from IPython.utils.py3compat import PY3 | ||
Thomas Kluyver
|
r18703 | from ...base.handlers import IPythonHandler, json_errors | ||
class ConfigHandler(IPythonHandler): | ||||
SUPPORTED_METHODS = ('GET', 'PUT', 'PATCH') | ||||
@web.authenticated | ||||
@json_errors | ||||
def get(self, section_name): | ||||
self.set_header("Content-Type", 'application/json') | ||||
Thomas Kluyver
|
r19083 | self.finish(json.dumps(self.config_manager.get(section_name))) | ||
Thomas Kluyver
|
r18703 | |||
@web.authenticated | ||||
@json_errors | ||||
def put(self, section_name): | ||||
Thomas Kluyver
|
r19083 | data = self.get_json_body() # Will raise 400 if content is not valid JSON | ||
self.config_manager.set(section_name, data) | ||||
Thomas Kluyver
|
r18703 | self.set_status(204) | ||
@web.authenticated | ||||
@json_errors | ||||
def patch(self, section_name): | ||||
Thomas Kluyver
|
r19083 | new_data = self.get_json_body() | ||
section = self.config_manager.update(section_name, new_data) | ||||
Thomas Kluyver
|
r18707 | self.finish(json.dumps(section)) | ||
Thomas Kluyver
|
r18703 | |||
# URL to handler mappings | ||||
section_name_regex = r"(?P<section_name>\w+)" | ||||
default_handlers = [ | ||||
(r"/api/config/%s" % section_name_regex, ConfigHandler), | ||||
] | ||||