def post(self): # Assuming a request on the form "{'argname':arg}" body = json.loads(escape.to_unicode(self.request.body)) base = body['base'] if base.startswith('git:'): base_nb, remote_nb = self._get_git_notebooks(base[len('git:'):]) elif base.startswith('checkpoint:'): base_nb, remote_nb = yield self._get_checkpoint_notebooks( base[len('checkpoint:'):]) else: # Regular files, call super super(ExtensionApiDiffHandler, self).post() return # Perform actual diff and return data: try: thediff = nbdime.diff_notebooks(base_nb, remote_nb) except Exception: self.log.exception('Error diffing documents:') raise HTTPError(500, 'Error while attempting to diff documents') data = { 'base': base_nb, 'diff': thediff, } self.finish(data)
def post(self): body = json.loads(escape.to_unicode(self.request.body)) try: # Validate the request input self._validate_request(body) # Get file contents based on Git regs ref_local = body['ref_local'] ref_remote = body['ref_remote'] file_path = body['file_path'] base_nb, remote_nb = self.get_git_notebooks( file_path, GitDiffHandler.parse_ref(ref_local), GitDiffHandler.parse_ref(ref_remote), ) # Perform actual diff and return data thediff = diff_notebooks(base_nb, remote_nb) data = { 'base': base_nb, 'diff': thediff, } self.finish(data) except HTTPError: raise except Exception: self.log.exception('Error diffing documents:') raise HTTPError(500, 'Error while attempting to diff documents')
def post(self): # Assuming a request on the form "{'argname':arg}" body = json.loads(escape.to_unicode(self.request.body)) base = body['base'] if base.startswith('git:'): base_nb, remote_nb = self._get_git_notebooks(base[len('git:'):]) elif base.startswith('checkpoint:'): base_nb, remote_nb = yield self._get_checkpoint_notebooks(base[len('checkpoint:'):]) else: # Regular files, call super super(ExtensionApiDiffHandler, self).post() return # Perform actual diff and return data: try: thediff = nbdime.diff_notebooks(base_nb, remote_nb) except Exception: self.log.exception('Error diffing documents:') raise HTTPError(500, 'Error while attempting to diff documents') data = { 'base': base_nb, 'diff': thediff, } self.finish(data)
def post(self): root_dir = getattr(self.contents_manager, 'root_dir', None) # Ensure notebooks are file-system based if root_dir is None: self.finish({'is_git': False}) # Assuming a request on the form "{'argname':arg}" body = json.loads(escape.to_unicode(self.request.body)) nb = os.path.join(root_dir, body['path']) data = {'is_git': is_path_in_repo(nb)} self.finish(data)