##// END OF EJS Templates
copy_from in json, not in url param
MinRK -
Show More
@@ -150,15 +150,19 b' class NotebookHandler(IPythonHandler):'
150 150 POST /api/notebooks/path?copy=OtherNotebook.ipynb : new copy of OtherNotebook in path
151 151 """
152 152
153 model = self.get_json_body()
154 copy = self.get_argument("copy", default="")
155 153 if name is not None:
156 raise web.HTTPError(400, "Only POST to directories. Use PUT for full names")
154 raise web.HTTPError(400, "Only POST to directories. Use PUT for full names.")
155
156 model = self.get_json_body()
157 157
158 if copy:
159 self._copy_notebook(copy, path)
160 elif model:
161 self._upload_notebook(model, path)
158 if model is not None:
159 copy_from = model.get('copy_from')
160 if copy_from:
161 if model.get('content'):
162 raise web.HTTPError(400, "Can't upload and copy at the same time.")
163 self._copy_notebook(copy_from, path)
164 else:
165 self._upload_notebook(model, path)
162 166 else:
163 167 self._create_empty_notebook(path)
164 168
@@ -178,14 +182,15 b' class NotebookHandler(IPythonHandler):'
178 182 """
179 183 if name is None:
180 184 raise web.HTTPError(400, "Only PUT to full names. Use POST for directories.")
185
181 186 model = self.get_json_body()
182 copy = self.get_argument("copy", default="")
183 if copy:
184 if model is not None:
185 raise web.HTTPError(400)
186 self._copy_notebook(copy, path, name)
187 elif model:
188 if self.notebook_manager.notebook_exists(name, path):
187 if model:
188 copy_from = model.get('copy_from')
189 if copy_from:
190 if model.get('content'):
191 raise web.HTTPError(400, "Can't upload and copy at the same time.")
192 self._copy_notebook(copy_from, path, name)
193 elif self.notebook_manager.notebook_exists(name, path):
189 194 self._save_notebook(model, path, name)
190 195 else:
191 196 self._upload_notebook(model, path, name)
@@ -2,6 +2,7 b''
2 2 """Test the notebooks webservice API."""
3 3
4 4 import io
5 import json
5 6 import os
6 7 import shutil
7 8 from unicodedata import normalize
@@ -25,11 +26,10 b' class NBAPI(object):'
25 26 def __init__(self, base_url):
26 27 self.base_url = base_url
27 28
28 def _req(self, verb, path, body=None, params=None):
29 def _req(self, verb, path, body=None):
29 30 response = requests.request(verb,
30 31 url_path_join(self.base_url, 'api/notebooks', path),
31 32 data=body,
32 params=params,
33 33 )
34 34 response.raise_for_status()
35 35 return response
@@ -47,7 +47,8 b' class NBAPI(object):'
47 47 return self._req('POST', path, body)
48 48
49 49 def copy_untitled(self, copy_from, path='/'):
50 return self._req('POST', path, params={'copy':copy_from})
50 body = json.dumps({'copy_from':copy_from})
51 return self._req('POST', path, body)
51 52
52 53 def create(self, name, path='/'):
53 54 return self._req('PUT', url_path_join(path, name))
@@ -56,7 +57,8 b' class NBAPI(object):'
56 57 return self._req('PUT', url_path_join(path, name), body)
57 58
58 59 def copy(self, copy_from, copy_to, path='/'):
59 return self._req('PUT', url_path_join(path, copy_to), params={'copy':copy_from})
60 body = json.dumps({'copy_from':copy_from})
61 return self._req('PUT', url_path_join(path, copy_to), body)
60 62
61 63 def save(self, name, body, path='/'):
62 64 return self._req('PUT', url_path_join(path, name), body)
General Comments 0
You need to be logged in to leave comments. Login now