copy_from in json, not in url param

MinRK 12 years ago
parent ef0d065712
commit 66ccce69c6

@ -150,15 +150,19 @@ class NotebookHandler(IPythonHandler):
POST /api/notebooks/path?copy=OtherNotebook.ipynb : new copy of OtherNotebook in path
"""
model = self.get_json_body()
copy = self.get_argument("copy", default="")
if name is not None:
raise web.HTTPError(400, "Only POST to directories. Use PUT for full names")
raise web.HTTPError(400, "Only POST to directories. Use PUT for full names.")
model = self.get_json_body()
if copy:
self._copy_notebook(copy, path)
elif model:
self._upload_notebook(model, path)
if model is not None:
copy_from = model.get('copy_from')
if copy_from:
if model.get('content'):
raise web.HTTPError(400, "Can't upload and copy at the same time.")
self._copy_notebook(copy_from, path)
else:
self._upload_notebook(model, path)
else:
self._create_empty_notebook(path)
@ -178,14 +182,15 @@ class NotebookHandler(IPythonHandler):
"""
if name is None:
raise web.HTTPError(400, "Only PUT to full names. Use POST for directories.")
model = self.get_json_body()
copy = self.get_argument("copy", default="")
if copy:
if model is not None:
raise web.HTTPError(400)
self._copy_notebook(copy, path, name)
elif model:
if self.notebook_manager.notebook_exists(name, path):
if model:
copy_from = model.get('copy_from')
if copy_from:
if model.get('content'):
raise web.HTTPError(400, "Can't upload and copy at the same time.")
self._copy_notebook(copy_from, path, name)
elif self.notebook_manager.notebook_exists(name, path):
self._save_notebook(model, path, name)
else:
self._upload_notebook(model, path, name)

@ -2,6 +2,7 @@
"""Test the notebooks webservice API."""
import io
import json
import os
import shutil
from unicodedata import normalize
@ -25,11 +26,10 @@ class NBAPI(object):
def __init__(self, base_url):
self.base_url = base_url
def _req(self, verb, path, body=None, params=None):
def _req(self, verb, path, body=None):
response = requests.request(verb,
url_path_join(self.base_url, 'api/notebooks', path),
data=body,
params=params,
)
response.raise_for_status()
return response
@ -47,7 +47,8 @@ class NBAPI(object):
return self._req('POST', path, body)
def copy_untitled(self, copy_from, path='/'):
return self._req('POST', path, params={'copy':copy_from})
body = json.dumps({'copy_from':copy_from})
return self._req('POST', path, body)
def create(self, name, path='/'):
return self._req('PUT', url_path_join(path, name))
@ -56,7 +57,8 @@ class NBAPI(object):
return self._req('PUT', url_path_join(path, name), body)
def copy(self, copy_from, copy_to, path='/'):
return self._req('PUT', url_path_join(path, copy_to), params={'copy':copy_from})
body = json.dumps({'copy_from':copy_from})
return self._req('PUT', url_path_join(path, copy_to), body)
def save(self, name, body, path='/'):
return self._req('PUT', url_path_join(path, name), body)

Loading…
Cancel
Save