remove copy via PUT

only copy via POST to directories
This commit is contained in:
Min RK 2014-11-04 14:17:19 -08:00
parent 3ada0c2c27
commit b6c4baa2fb
2 changed files with 15 additions and 26 deletions

View File

@ -158,23 +158,12 @@ class ContentsHandler(IPythonHandler):
Save notebook at ``path/Name.ipynb``. Notebook structure is specified
in `content` key of JSON request body. If content is not specified,
create a new empty notebook.
PUT /api/contents/path/Name.ipynb
with JSON body::
{
"copy_from" : "[path/to/]OtherNotebook.ipynb"
}
Copy OtherNotebook to Name
"""
model = self.get_json_body()
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(copy_from, path)
elif self.contents_manager.file_exists(path):
if model.get('copy_from'):
raise web.HTTPError(400, "Cannot copy with PUT, only POST")
if self.contents_manager.file_exists(path):
self._save(model, path)
else:
self._upload(model, path)

View File

@ -55,7 +55,7 @@ class API(object):
body = json.dumps({'ext': ext})
return self._req('POST', path, body)
def copy_untitled(self, copy_from, path='/'):
def copy(self, copy_from, path='/'):
body = json.dumps({'copy_from':copy_from})
return self._req('POST', path, body)
@ -68,7 +68,7 @@ class API(object):
def mkdir(self, path='/'):
return self._req('PUT', path, json.dumps({'type': 'directory'}))
def copy(self, copy_from, path):
def copy_put(self, copy_from, path='/'):
body = json.dumps({'copy_from':copy_from})
return self._req('PUT', path, body)
@ -352,25 +352,25 @@ class APITest(NotebookTestBase):
data = resp.json()
self.assertEqual(data['content']['nbformat'], 4)
def test_copy_untitled(self):
resp = self.api.copy_untitled(u'å b/ç d.ipynb', u'unicodé')
def test_copy(self):
resp = self.api.copy(u'å b/ç d.ipynb', u'unicodé')
self._check_created(resp, u'unicodé/ç d-Copy0.ipynb')
resp = self.api.copy_untitled(u'å b/ç d.ipynb', u'å b')
resp = self.api.copy(u'å b/ç d.ipynb', u'å b')
self._check_created(resp, u'å b/ç d-Copy0.ipynb')
def test_copy(self):
resp = self.api.copy(u'å b/ç d.ipynb', u'å b/cøpy.ipynb')
self._check_created(resp, u'å b/cøpy.ipynb')
def test_copy_path(self):
resp = self.api.copy(u'foo/a.ipynb', u'å b/cøpyfoo.ipynb')
self._check_created(resp, u'å b/cøpyfoo.ipynb')
resp = self.api.copy(u'foo/a.ipynb', u'å b')
self._check_created(resp, u'å b/a-Copy0.ipynb')
def test_copy_put_400(self):
with assert_http_error(400):
resp = self.api.copy_put(u'å b/ç d.ipynb', u'å b/cøpy.ipynb')
def test_copy_dir_400(self):
# can't copy directories
with assert_http_error(400):
resp = self.api.copy(u'å b', u'å c')
resp = self.api.copy(u'å b', u'foo')
def test_delete(self):
for d, name in self.dirs_nbs: